繁体   English   中英

从PHP检索Javascript中的JSON数组

[英]Retrieving JSON array in Javascript from PHP

我试图将PHP的json编码数组返回给JS,我已经做过很多次了,但是现在我遇到了一个奇怪的错误。 我已成功获取数据,并以chrome显示数组。 但是,如果指定dataType: 'json' ,则无法进入AJAX成功函数。 如果我删除dataType并使用var parsed = JSON.parse(data); 它将进入成功函数,但会引发意外的类型错误。 请帮忙。

Chrome输出:

[
    {
        "fullURL": "https://lh6.googleusercontent.com/--ZKG_L-SA9c/UgqECNqP4II/AAAAAAAAA2I/i5nCa3CvKqM/s912/2010raptor_firstdrive002_opt.jpg",
        "thumbURL": "https://lh6.googleusercontent.com/--ZKG_L-SA9c/UgqECNqP4II/AAAAAAAAA2I/i5nCa3CvKqM/s128-c/2010raptor_firstdrive002_opt.jpg",
        "location": "",
        "caption": "",
        "tags": "",
        "program_instance_id": "a0Ji0000001pPO6EAM"
    },
    {
        "fullURL": "https://lh3.googleusercontent.com/-kyUg7_Rul90/UgqEDIu4DhI/AAAAAAAAA2Q/WF0BAEI7smo/s912/220px-Microchip_PIC24HJ32GP202.jpg",
        "thumbURL": "https://lh3.googleusercontent.com/-kyUg7_Rul90/UgqEDIu4DhI/AAAAAAAAA2Q/WF0BAEI7smo/s128-c/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事件,但是我已经测试了您与each循环一起提供的json,并且它可以正常工作。 链接到FIDDLE

var data = [{
    "caption": "",
        "fullURL": "https://lh6.googleusercontent.com/--ZKG_L-SA9c/UgqECNqP4II/AAAAAAAAA2I/i5nCa3CvKqM/s912/2010raptor_firstdrive002_opt.jpg",
        "location": "",
        "program_instance_id": "a0Ji0000001pPO6EAM",
        "tags": "",
        "thumbURL": "https://lh6.googleusercontent.com/--ZKG_L-SA9c/UgqECNqP4II/AAAAAAAAA2I/i5nCa3CvKqM/s128-c/2010raptor_firstdrive002_opt.jpg"
}, {
    "caption": "",
        "fullURL": "https://lh3.googleusercontent.com/-kyUg7_Rul90/UgqEDIu4DhI/AAAAAAAAA2Q/WF0BAEI7smo/s912/220px-Microchip_PIC24HJ32GP202.jpg",
        "location": "",
        "program_instance_id": "a0Ji0000001pPO6EAM",
        "tags": "",
        "thumbURL": "https://lh3.googleusercontent.com/-kyUg7_Rul90/UgqEDIu4DhI/AAAAAAAAA2Q/WF0BAEI7smo/s128-c/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

$.each$.each函数中parsed的变量。 您应该使用data而不是parsed data ,因为datasuccess回调函数中的变量。

$.each(data, function(i, index) {
    alert(index.fullURL);
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM