Получение массива JSON в Javascript из PHP

Я пытаюсь вернуть 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" } ] 

PHP

 $arr = array(); foreach($photoURLS as $photo) { $arr[] = $photo; } } echo json_encode($arr); 

JS

 $.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); });