Я пытаюсь вернуть json закодированный массив в JS из PHP, и я делал это много раз раньше, но теперь я получаю странную ошибку. Я успешно получаю данные, и он отображает массив в хроме. Однако я не могу заставить его войти в функцию успеха AJAX, если я dataType: 'json'
. Если я удалю dataType и использую var parsed = JSON.parse(data);
он войдет в функцию успеха, но он вызовет ошибку неожиданного типа. Пожалуйста помоги.
Выход Chrome:
[ { "fullURL": "http://img.ruphp.com/php/2010raptor_firstdrive002_opt.jpg", "thumbURL": "http://img.ruphp.com/php/2010raptor_firstdrive002_opt.jpg", "location": "", "caption": "", "tags": "", "program_instance_id": "a0Ji0000001pPO6EAM" }, { "fullURL": "http://img.ruphp.com/php/220px-Microchip_PIC24HJ32GP202.jpg", "thumbURL": "http://img.ruphp.com/php/220px-Microchip_PIC24HJ32GP202.jpg", "location": "", "caption": "", "tags": "", "program_instance_id": "a0Ji0000001pPO6EAM" } ]
$arr = array(); foreach($photoURLS as $photo) { $arr[] = $photo; } } echo json_encode($arr);
$.ajax ({ async: "false", type: 'POST', data: {action: 'var1', albumName: 'var2'}, dataType: 'json', url: '/controller/function', success: function(data) { //alert($.isArray(data)); $.each(parsed, function(i, index) { alert(index.fullURL); }); } });
Поэтому я отработал код и подумал, что это решение может сработать для вас.
$.ajax({ async: "false", type: 'POST', data: { action: 'var1', albumName: 'var2' }, dataType: 'json', url: '/controller/function', success: function(data) { $.each(data, function(index, element) { console.log(index); console.log(element.fullURL); console.log(element); }); } });
Я не могу протестировать событие ajax, но я тестировал json, который вы предоставили с каждым циклом, и он работает на швы. СВЯЗАТЬСЯ С FIDDLE
var data = [{ "caption": "", "fullURL": "http://img.ruphp.com/php/2010raptor_firstdrive002_opt.jpg", "location": "", "program_instance_id": "a0Ji0000001pPO6EAM", "tags": "", "thumbURL": "http://img.ruphp.com/php/2010raptor_firstdrive002_opt.jpg" }, { "caption": "", "fullURL": "http://img.ruphp.com/php/220px-Microchip_PIC24HJ32GP202.jpg", "location": "", "program_instance_id": "a0Ji0000001pPO6EAM", "tags": "", "thumbURL": "http://img.ruphp.com/php/220px-Microchip_PIC24HJ32GP202.jpg" }]; $.each(data, function (index, element) { console.log(index); console.log(element.fullURL); });
также хорошая новость заключается в том, что ваш json на 100% действителен, поэтому то, что передается обратно, правильно. Надеюсь это поможет
Возможно, вам нужно отправить правильный HTTP-заголовок с ответом. См. Здесь: https://stackoverflow.com/questions/267546/correct-http-header-for-json-file
Переменная, parsed
в вашей функции $.each
не определена. вы должны использовать data
вместо parsed
поскольку data
являются переменной в вашей функции обратного вызова.
$.each(data, function(i, index) { alert(index.fullURL); });