2016-07-04 3 views
0

Я получаю некоторый JSON и пытаюсь сделать .each на ответ. Я не уверен, как это сделать на этом объекте ... Я пытаюсь получить Title и SysID.jQuery .each() как использовать на этом объекте

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

Любая помощь приветствуется ...

+1

, что это не является массивом. вы не можете это сделать –

+1

Пробовал ли вы 'for (var i = 0; i

ответ

1

Вы можете выбрать один из этих двух вещей.

  1. Вы можете использовать метод JSON.parse() для синтаксического анализа строки как действительного json.
  2. Используйте dataType:"json", который может разбирать строку json как действительный json автоматически.

мне второй подход лучше. Таким образом, вы можете сделать это:

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