2017-09-27 7 views
-1

私はAjax POSTメソッドを使用してクロスドメイン結果を取得しています。結果は、私が実行したときのために、戻ってきている:JSONオブジェクト:TypeError:element is 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"要素を取得しています。私が戻ってきたオブジェクトに基づいて、 "Folder 1"、 "Folder 4"などが得られるはずです。

+0

申し訳ありませんが、あなたは右、私は私のコメントを削除しています。 – Blauharley

+0

try:if(要素!= null)console.log(要素.NM);あなたはどこかでnullのFLDRを持っていると確信しています –

+0

その特定のオブジェクトのあなたの値のどれも 'nm'プロパティを持っていません。私はあなたが思っていることを反復していないか、またはネストされたオブジェクトのプロパティを参照する方法をさらに誤解していると思われます。 –

答えて

-1

"index"と "element"とラベル付けされた変数は実際にはdata.RSP.FLDRの範囲内のキーと値のペアです - あなたの "null"の結果は、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

私が答えに何も説明を加えていなかったので、ダウンボートがあったなら、それは私の悪いことです。私は早すぎるポストを打ちました(そして答えを更新しました)。何か他の理由があった場合は、私がそれを修正できるように私に知らせてください! –

-1

elementは、それぞれFLDRオブジェクトのキーです。 FLDR.USRなどのオブジェクトはnullです。オブジェクトを調べると、element.NMにアクセスしようとすると、nullというオブジェクトにアクセスしようとしているため、破損しています。