【问题标题】:Read JSON data from AJAX [duplicate]从 AJAX 读取 JSON 数据 [重复]
【发布时间】:2017-10-06 11:34:12
【问题描述】:

考虑:

 $.ajax({
        type: "POST",
        url: "/myurl",
        async: false,
        data: JSON.stringify({}),
        contentType: "application/json",
        complete: function (data) {
                var results = data["responseText"];
                alert(results)
        },
        error: function () {
              alert("Error")
        }
 });

返回的 JSON:

{"jsonrpc": "2.0", "id": null, "result": "{\"ids\": [{\"id\": 1, \"name\": \"Messi\"}, {\"id\": 2, \"name\": \"Ronaldo\"}]}"}

如何在 div 中添加如下数据?

1 Messi

2 Ronaldo

【问题讨论】:

  • 循环遍历数组?仅供参考:同步请求是个坏主意。

标签: javascript json ajax function jsonp


【解决方案1】:

从您的 Ajax 响应中选择 ids 属性,遍历它并使用该信息准备所需的 HTML 结构。最后,将此 HTML 字符串插入您的 HTML 页面。

/*
    $.ajax({
        type: "POST",
        url: "/myurl",
        async: false,
        data: JSON.stringify({}),
        contentType: "application/json",
        complete: function (data) {
                      var response = data["responseText"];
                      var insertDatas = JSON.parse(response.result);
                      var htmlString = "";
                      insertDatas.ids.forEach(function( item ){
                          htmlString += '<li>'+item.name+'</li>';
                      });//forEach()

                      $("#players-list").html( htmlString );
                  },
                  error: function () {
                      alert("Error")
                  }
    });
*/

var response = {
  "jsonrpc": "2.0",
  "id": null,
  "result":
    {"ids":
      [
       {"id": 1, "name": "Messi"},
       {"id": 2, "name": "Ronaldo"}
      ]
    }
};

var htmlString = "";
response.result.ids.forEach(function(item){
    htmlString += '<li>' + item.name + '</li>';
});//forEach()

$("#players-list").html( htmlString );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ol id="players-list"></ol>

【讨论】:

  • Tnx 帮助您的示例正常工作,但在我的解决方案中如何将 JSON 结果分配给响应变量?尝试 var response = data["responseText"] 不起作用时,我没有 var response。
  • 在您的示例中,data 本身就是响应。将response 替换为data 并使用此代码。它应该可以工作。
  • 我的来源imgur.com/a/G12Mv
  • 用数据替换响应后不工作
  • 在该链接图像中,您强调了第二种方式适合您。您可以使用它并循环通过ids
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2016-09-13
相关资源
最近更新 更多