jQuery .each()如何在这个对象上使用

时间:2016-07-04 11:40:22

标签: jquery each

我得到一些JSON并试图对响应做一个.each。我不确定如何在这个对象上做到这一点......我试图获得Title和SysID。

enter image description here

这是我的JS:

        var siteURL = _spPageContextInfo.webAbsoluteUrl;;
    $.ajax({
        url: siteURL + "/content/_api/web/lists/getbytitle('topsupportarticles')/items",
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (response) {
            if (response.d.results.length > 0) {
            console.log(response);
                    //This section can be used to iterate through data and show it on screen .each should be here
                    console.log(response.d.results[0].Title);
                    $(".js-top-support").html("<li><a href=\"/pages/snDetails.aspx?articleID=KB0010606&sysID=" + response.d.results[0].SysID + 
                    "\" class=\"js-top-support-articles\">" + response.d.results[0].Title + "</a><div class=\"x-editable-menu\"><span class=\"btn-edit\"><span class=\"icon-wrench\"></span></span></div></li>");
            }
        },
        error: function (response) {
            alert("Error: " + response);
        }
    });

感谢任何帮助...

2 个答案:

答案 0 :(得分:1)

您可以选择以下两种方法之一。

  1. 您可以使用JSON.parse()方法将字符串解析为有效的json。
  2. 使用dataType:"json"可以将json字符串自动解析为有效的json
  3. 对我来说,第二种方法更好。所以,你可以这样做:

    $.ajax({
      url: siteURL + "/content/_api/web/lists/getbytitle('topsupportarticles')/items",
      method: "GET",
      headers: {
        "Accept": "application/json; odata=verbose"
      },
      dataType:"json", //<------------------------ ADDED DATATYPE HERE
      success: function(response) {
        if (response.d.results.length > 0) {
          console.log(response);
          //This section can be used to iterate through data and show it on screen .each should be here
          console.log(response.d.results[0].Title);
          $(".js-top-support").html("<li><a href=\"/pages/snDetails.aspx?articleID=KB0010606&sysID=" + response.d.results[0].SysID +
            "\" class=\"js-top-support-articles\">" + response.d.results[0].Title + "</a><div class=\"x-editable-menu\"><span class=\"btn-edit\"><span class=\"icon-wrench\"></span></span></div></li>");
        }
      },
      error: function(response) {
        alert("Error: " + response);
      }
    });
    

    但是你应该注意,如果你只有一个对象,那么你可以在这里使用response.d.results[0],否则使用for循环或$.each()迭代数组中的对象。

    作为旁注,这里有两个分号:

    var siteURL = _spPageContextInfo.webAbsoluteUrl;; 
    

答案 1 :(得分:0)

如果你在jsfiddle或codepen上传代码会更好。

试试这个:

var results = response.d.results;

jQuery.each(results, function(key,value) {
    console.log(key);
    console.log(value);
    var sysid = value.SysId;
    var title = value.Title;
});