如何读取 Jquery ajax 中名称和值对中的 JSONP 响应数据?

How to read JSONP response data in name and value pairs in Jquery ajax.?

我正在尝试使用 JSONP 技术从其他域读取 JSON 文件

这是JSON

callback({
  "response":{"docs":[
      {
        "FirstName":"qwe",
        "LastName":"asd",
        "Age":"30"},
      {
        "FirstName":"zxc",
        "LastName":"bnm",
        "Age":"40"},

        .
        .
        .
      {
        "FirstName":"poi",
        "LastName":"lkj",
        "Age":"20"},
      ]},
})

这是Jquery代码

$.ajax({
                    type: "GET",
                    url: "http://qqq.com/",
                    crossDomain: true,
                    jsonpCallback: 'callback',
                    contentType: "application/json; charset=utf-8",
                    dataType: "jsonp",
                    success: function (msg) {
                         $.each(msg.response.docs, function (key, value){
                              alert(key +"is"+value);
                    }
         });

根据上面的代码,我希望得到的警报输出为

FirstName is qwe
LastName is asd 
and so on

但我收到的警报是

0 is [object Object]
1 is [object Object]
and so on

我能知道我需要做什么才能像我期望的那样

FirstName is qwe
LastName is asd 

提前致谢

你应该先迭代一个数组,然后在单个对象中迭代:

像这样:

success: function (msg) {
    $.each(msg.response.docs, function (singleDoc){
        $.each(singleDoc, function (key, value){
            alert(key +"is"+value);
        }
    }
}

您的 $each 函数正在遍历 docs 数组。传递给它的参数将是:

  • key: 文档对象索引
  • val: 文档对象本身

相反,您可能还想用另一个循环遍历每个(键,值)对:

success: function (msg) {
  $.each(msg.response.docs, function (index, doc){
      $.each(doc, function (key, val) {
        console.log(key + 'is' + val);
      });
  }
}

当你使用 jquery 的每个方法时,你会得到索引作为第一个参数,在第二个参数中你会得到每个对象的迭代顺序。

所以你需要使用这样的代码

  $.each(msg.response.docs, function (key,value){

      console.log('FirstName is '+value.FirstName);

      console.log('LastName is'+value.LastName); 
      .
      .
      .
    });