2014-10-17 4 views
0

Я не могу разобрать свойство из объекта JSON. Поскольку это всего лишь один объект JSON, я не уверен, что мне нужно сделать $.each или я могу напрямую захватить свойства как data.d.property. Может ли кто-нибудь объяснить, как я делаю, чтобы захватить значение свойств с этого объекта?

Это то, что у меня есть:

jQ(document).ready(function() { 
    var listDataURL = ""; 
    var root = getParameterByName('RootFolder'); 
    var rootFolderID = getParameterByName("ID"); 
    var docSetTitle = root.substr(root.lastIndexOf('/') + 1);  
    listDataURL = "http://SomeSite/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(" + rootFolderID +")"; 
     //use the getJSON mehtod of Jquery 
     jQ.getJSON(listDataURL, function(data, status, jqXHR) { 
     console.log(jqXHR.responseText); 
     //iterate through all the items 
     jQ.each(data.d.results, function(i, result) {   
      //get child items count for the current set   
      ChildItemCount = result.ItemChildCount; 
      NumOfItemsApproved = result.ApprovalCounter; 

      }); 
      if (ChildItemCount !== NumOfItemsApproved){ 
      alert("Ah ah! The ApprovalCounter got skewed and needs to be fixed."); 
      } 
      if (ChildItemCount === NumOfItemsApproved){ 
      alert("ApprovalCounter looks good!"); 
      } 
     }); 
}); 

И ответ JSON это ниже, я пытаюсь схватить значение ApprovalCounter:

{ 
    "d":{ 
     "__metadata":{ 
     "uri":"http://collaboration/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(84)", 
     "etag":"W/\"12\"", 
     "type":"Microsoft.SharePoint.DataService.ResumeBankItem", 
     "edit_media":"http://collaboration/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(84)/$value", 
     "media_src":"http://collaboration/sites/TestWF", 
     "content_type":"text/xml" 
     }, 
     "Id":84, 
     "ContentTypeID":"0x0120D52000E387E9726C57FE40807A71CC05BEF45A005D5A666FE9576E42B629AF7CDB33F1B0", 
     "ContentType":"JobApplication", 
     "Created":"\/Date(1413213951000)\/", 
     "CreatedBy":{ 
     "__deferred":{ 
      "uri":"http://collaboration/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(84)/CreatedBy" 
     } 
     }, 
     "CreatedById":1, 
     "Modified":"\/Date(1413561633000)\/", 
     "ModifiedBy":{ 
     "__deferred":{ 
      "uri":"http://collaboration/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(84)/ModifiedBy" 
     } 
     }, 
     "ModifiedById":1, 
     "CopySource":null, 
     "ApprovalStatus":"2", 
     "ApproverComments":null, 
     "Path":"/sites/TestWF/ResumeBank", 
     "CheckedOutTo":{ 
     "__deferred":{ 
      "uri":"http://collaboration/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(84)/CheckedOutTo" 
     } 
     }, 
     "CheckedOutToId":null, 
     "Name":"Tabitha Johnson", 
     "VirusStatus":"", 
     "IsCurrentVersion":true, 
     "Owshiddenversion":12, 
     "Version":"1.0", 
     "Title":"Tabitha Johnson", 
     "Description":null, 
     "RoleAppliedFor":"HR Assistant", 
     "HiringDepartment":{ 
     "__deferred":{ 
      "uri":"http://collaboration/sites/TestWF/_vti_bin/listdata.svc/ResumeBank(84)/HiringDepartment" 
     } 
     }, 
     "HiringDepartmentValue":"HR", 
     "FirstRoundApproval":null, 
     "StartDate":"\/Date(1413158400000)\/", 
     "ApprovalCounter":0, 
     "Education":null, 
     "Experience":null, 
     "ApproveEachDoc":null, 
     "ApproveDocSet1st":"2", 
     "ApproveDocSet2nd":"2" 
    } 
} 
+1

Вы спрашиваете, как разбирать сам JSON (как в 'JSON.parse')? Я думаю, что jQuery будет автоматически анализировать JSON перед передачей вам данных. – Whymarrh

+1

нет 'd.results', вы просто хотите' data.d.ApprovalCounter', не используя 'each' – charlietfl

+0

Извините, что я хотел получить свойства объекта JSON. – Athapali

ответ

1

Проблема в вашей функции $.each().

jQ.each(data.d.results, function(i, result) { ... } 

$ .each() ищет массив для перебора и последующего обратного вызова в качестве параметров.

Ваш массив - все объекты json, вложенные в ваш объект «d». Это хорошо.

Ваш обратный вызов указывает пару «ключ-значение» function(i, result), где, когда цикл достигает объекта { "ApprovalCounter" : "0" }, i = «Счетчик утверждений» и результат = «0». ... так results.Anything собирается выбросить ошибку.

Long Story Short:

Изменить его:

JQ.each(data.d.results, function(results)) { 
    //... 
    var count = results.ApprovalCounter; 
    //... 
} 

и он должен работать ...

В качестве альтернативы:

Вам не нужно используйте цикл $ .each() на всех, чтобы просто получить доступ к значению из «ApprovalCounter».

data.d.ApprovalCounter 

... должно возвращать "0."

Надеюсь, это поможет!

2

Это должно быть просто data.d. ApprovalСкачать

Смежные вопросы