2017-09-27 4 views
-1

Ajax POST 메서드를 사용하여 도메인 간 결과를 가져옵니다. 결과는 내가 실행할 때를 위해, 반환됩니다 JSON 개체 : TypeError : 요소가 null입니다.

var results = JSON.stringify(data); 
console.log(results); 

내가 다음 얻을 :

{"ERR":null,"RSP":{"FLDR":{"ID":"1","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1505397375000","NM":"Documents","DESC":"Repository Root Folder","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":null,"FLDR":null,"FLDRS":[{"ID":"2","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1506442678000","NM":"Folder 1","DESC":"Level 1 Test Folder 1","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":null,"FLDR":{"ID":"1","TJT":"ID"},"FLDRS":null,"DOCS":null,"PROPS":null},{"ID":"5","TJT":"FULL","ACTV":"true","BO":"1505397610000","LU":"1506442685000","NM":"Folder 4","DESC":"folder 4","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"FLDRS":[{"ID":"8","TJT":"FULL","ACTV":"true","BO":"1506444461000","LU":"1506444461000","NM":"Test Folder","DESC":"Please delete this folder","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"5","TJT":"ID"},"FLDRS":null,"DOCS":null,"PROPS":null}],"DOCS":null,"PROPS":null},{"ID":"6","TJT":"FULL","ACTV":"true","BO":"1505405095000","LU":"1506442367000","NM":"Folder 5","DESC":"test folder object","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"FLDRS":[{"ID":"7","TJT":"FULL","ACTV":"true","BO":"1505405109000","LU":"1506442672000","NM":"Folder 5","DESC":"test folder object","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"6","TJT":"ID"},"FLDRS":null,"DOCS":null,"PROPS":null}],"DOCS":null,"PROPS":null}],"DOCS":[{"ID":"1","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1505400744000","TTL":"Test Document 1","DESC":"Document 1","FLNM":null,"SZ":"0","FL":"false","AUDIT":"false","ADDR":"0","ENCD":"true","INIV":null,"KEY":null,"CMP":"false","CMPSZ":"0","VAL0":null,"VAL1":null,"VAL2":null,"VAL3":null,"VAL4":null,"VAL5":null,"VAL6":null,"VAL7":null,"VAL8":null,"VAL9":null,"ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"DOCTP":{"ID":"1","TJT":"ID"},"USR":{"ID":"3","TJT":"ID"},"PROPS":null},{"ID":"2","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1506441814000","TTL":"Test Employee Document 1","DESC":"Document 2","FLNM":null,"SZ":"0","FL":"false","AUDIT":"false","ADDR":"0","ENCD":"true","INIV":null,"KEY":null,"CMP":"false","CMPSZ":"0","VAL0":"General Information","VAL1":"Pete Morgan","VAL2":null,"VAL3":null,"VAL4":null,"VAL5":null,"VAL6":"39.0","VAL7":null,"VAL8":"1505397375491","VAL9":null,"ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"DOCTP":{"ID":"2","TJT":"ID"},"USR":{"ID":"3","TJT":"ID"},"PROPS":null}],"PROPS":null}}} 

문제는 내가이 기능을 실행하면, 나는 다음과 같은 오류 얻고있다 :

TypeError: element is null

function getSubfolders(acctId,repoId,fldrId) 
{ 
    $.ajax({ 
     type: 'POST', 
     url: 'http://52.36.x.xxx/sdws/appv1/accts/' + storage.get('LoginID') + '/repos/' + repoId + '/fldrs/' + fldrId, 
     crossDomain: true, 
     xhrFields: { 
      withCredentials: true 
     }, 
     data: '{"CASCD":"true"}', 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 

     success: function(data) { 
      $.each(data.RSP.FLDR, function(index, element) { 
       console.log(element.NM); 
      });   
     }, 
     error: function(e) { 
      console.log(e); 
     }   
    }); 
} 

내가 여기에없는 것을 이해하지 못합니다. 그것은 각 진술은 루핑하지만 나는 "null"요소를 받고있는 것 같습니다. 내가 반환하는 개체를 기반으로, 내가 "폴더 1", "폴더 4"등 모든 아이디어를 얻는 것 같아요?

+0

죄송합니다, 당신이 바로, 내 의견을 제거한다. – Blauharley

+0

시도 : if (element! = null) console.log (element.NM); 너는 json에서 어딘가에서 null FLDR을 가졌음을 확신한다. –

+0

특정 객체의 값 중에 'nm' 속성이 없다. 나는 네가 생각하는 것을 반복하지 않고, 중첩 된 객체의 속성을 참조하는 방법을 오해하고있는 것 같아. –

답변

-1

"인덱스"및 "요소"라고 표시된 변수는 실제로 data.RSP.FLDR의 키와 값 쌍입니다. 결과 값이 element.NM인데, 원하는 값이 실제로 내부는 element입니다. '당신에게 대신

console.log(data.RSP.FLDR.NM) 

경우 : 그건 당신이 다음 코드는 바로 다음 수 있고, 필요하다면 -

는 문제의 코드는 데이터 만 내 하나 개의 경로, data.RSP.FLDR를 검색합니다, 말했다 데이터 트리에서 NM 값을 모두 찾으려면 단일 each 루프 대신 트리 내에서 재귀 검색을 수행해야합니다. 이것은 예를 들어, 작동 :

var data = {"ERR":null,"RSP":{"FLDR":{"ID":"1","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1505397375000","NM":"Documents","DESC":"Repository Root Folder","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":null,"FLDR":null,"FLDRS":[{"ID":"2","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1506442678000","NM":"Folder 1","DESC":"Level 1 Test Folder 1","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":null,"FLDR":{"ID":"1","TJT":"ID"},"FLDRS":null,"DOCS":null,"PROPS":null},{"ID":"5","TJT":"FULL","ACTV":"true","BO":"1505397610000","LU":"1506442685000","NM":"Folder 4","DESC":"folder 4","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"FLDRS":[{"ID":"8","TJT":"FULL","ACTV":"true","BO":"1506444461000","LU":"1506444461000","NM":"Test Folder","DESC":"Please delete this folder","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"5","TJT":"ID"},"FLDRS":null,"DOCS":null,"PROPS":null}],"DOCS":null,"PROPS":null},{"ID":"6","TJT":"FULL","ACTV":"true","BO":"1505405095000","LU":"1506442367000","NM":"Folder 5","DESC":"test folder object","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"FLDRS":[{"ID":"7","TJT":"FULL","ACTV":"true","BO":"1505405109000","LU":"1506442672000","NM":"Folder 5","DESC":"test folder object","ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"USR":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"6","TJT":"ID"},"FLDRS":null,"DOCS":null,"PROPS":null}],"DOCS":null,"PROPS":null}],"DOCS":[{"ID":"1","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1505400744000","TTL":"Test Document 1","DESC":"Document 1","FLNM":null,"SZ":"0","FL":"false","AUDIT":"false","ADDR":"0","ENCD":"true","INIV":null,"KEY":null,"CMP":"false","CMPSZ":"0","VAL0":null,"VAL1":null,"VAL2":null,"VAL3":null,"VAL4":null,"VAL5":null,"VAL6":null,"VAL7":null,"VAL8":null,"VAL9":null,"ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"DOCTP":{"ID":"1","TJT":"ID"},"USR":{"ID":"3","TJT":"ID"},"PROPS":null},{"ID":"2","TJT":"FULL","ACTV":"true","BO":"1505397375000","LU":"1506441814000","TTL":"Test Employee Document 1","DESC":"Document 2","FLNM":null,"SZ":"0","FL":"false","AUDIT":"false","ADDR":"0","ENCD":"true","INIV":null,"KEY":null,"CMP":"false","CMPSZ":"0","VAL0":"General Information","VAL1":"Pete Morgan","VAL2":null,"VAL3":null,"VAL4":null,"VAL5":null,"VAL6":"39.0","VAL7":null,"VAL8":"1505397375491","VAL9":null,"ACCT":{"ID":"1","TJT":"ID"},"REPO":{"ID":"1","TJT":"ID"},"FLDR":{"ID":"1","TJT":"ID"},"DOCTP":{"ID":"2","TJT":"ID"},"USR":{"ID":"3","TJT":"ID"},"PROPS":null}],"PROPS":null}}} 
 

 
var searchTree = function(obj) { 
 
    if (obj && typeof(obj) === 'object') { 
 
    $.each(obj, function(k, v) { 
 
     if (k === 'NM') { 
 
     console.log(v) // found one 
 
     } 
 
     searchTree(v); // recurse to child objects 
 
    }) 
 
    } 
 
} 
 

 
searchTree(data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

답변에 설명을 추가하지 않았기 때문에 downvote가있는 경우, 그것은 나쁘다. 나는 조기에 게시물을 치고 (지금은 답변을 업데이트했다). 다른 이유가 있다면 알려 주시면 고칠 수 있습니다! –

-1

element은 각각 FLDR 개체의 키입니다. FLDR.USR 및 기타 항목은 null이므로 개체를 조사하면 element.NM에 액세스하려고 시도 할 때 null 값의 개체에 액세스하려하므로 파손이 발생합니다.

관련 문제