I'm using an Ajax POST method to get cross-domain results. The results are returning, for when I execute:
var results = JSON.stringify(data);
console.log(results);
I get the following:
{"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}}}
The problem is when I execute this function, I am getting the following error:
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);
}
});
}
I don't understand what I'm missing here. It seems that the each statement is looping but I am getting "null" elements. Based on the object I'm returning, it seems like I should be getting "Folder 1", "Folder 4", etc. Any ideas?
The variables you've labeled "index" and "element" are actually the key and value pairs within data.RSP.FLDR
-- your "null" results are because you're trying to output element.NM
, when the value you want is actually inside element
itself.
That said, the code in your question will only search one path within the data, data.RSP.FLDR
-- if that's what you need, then your code can just be the following:
console.log(data.RSP.FLDR.NM)
If instead you're trying to find all the NM
values in the data tree, you'll need to do a recursive search within the tree instead of just a single each
loop. This works, for example:
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>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.