Answered by:
can we use "for" loop statement to retrieve details from JSON data ?

Question
-
hi im using this code to retrieve annotation details using Odata and jquery.
function annotation_details() { var serverUrl =Xrm.Page.context.getServerUrl(); var GUIDvalue = Xrm.Page.data.entity.getId(); // Creating the Odata Endpoint var oDataPath = "http://server/orgname/XRMServices/2011/OrganizationData.svc"; var retrieveReq = new XMLHttpRequest(); var Odata = oDataPath + "/AnnotationSet?$select=DocumentBody,FileName,MimeType,ObjectId&$filter=ObjectId/Id eq guid'" + GUIDvalue + "'"; retrieveReq.open("GET", Odata, false); retrieveReq.setRequestHeader("Accept", "application/json"); retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8"); retrieveReq.onreadystatechange = function () { retrieveReqCallBack(this); }; retrieveReq.send(); } function retrieveReqCallBack(retrieveReq) { if (retrieveReq.readyState == 4 /* complete */) { var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d; var message; var a = 0; for (var i in retrieved) { message = retrieved.results[a].FileName; alert(message); a++; } } }
as you can see the last 8 lines of the above code, im trying to show all filenames as alerts using "For" loop. but i can see the file name as alert which is in 0th place only. Looping is not working.
my requirement is to display all the file names as alerts. how to do this ?
Friday, July 20, 2012 11:53 AM
Answers
-
Try to use following code:
for (var i = 0; i < retrieved.results.length; i++) { message = retrieved.results[i].FileName; alert(message); }
instead of
for (var i in retrieved) { message = retrieved.results[a].FileName; alert(message); a++; }
Microsoft CRM Freelancer
My blog (english)
Мой блог (русскоязычный)
- Proposed as answer by JLattimerMVP, Moderator Friday, July 20, 2012 12:13 PM
- Marked as answer by Ravitheja J Friday, July 20, 2012 12:43 PM
Friday, July 20, 2012 12:07 PMModerator
All replies
-
Try to use following code:
for (var i = 0; i < retrieved.results.length; i++) { message = retrieved.results[i].FileName; alert(message); }
instead of
for (var i in retrieved) { message = retrieved.results[a].FileName; alert(message); a++; }
Microsoft CRM Freelancer
My blog (english)
Мой блог (русскоязычный)
- Proposed as answer by JLattimerMVP, Moderator Friday, July 20, 2012 12:13 PM
- Marked as answer by Ravitheja J Friday, July 20, 2012 12:43 PM
Friday, July 20, 2012 12:07 PMModerator -
thanks Andrii.
Its working fine.
var message; for (var i = 0; i < retrieved.results.length; i++) { message += i+")"+retrieved.results[i].FileName + "\n"; } alert(message );
but im getting "undefined" before first file name. What could be the reason ?
Friday, July 20, 2012 12:48 PM -
Try to change
var message;
to
var message = '';
Microsoft CRM Freelancer
My blog (english)
Мой блог (русскоязычный)
- Proposed as answer by Andrii ButenkoMVP, Moderator Friday, July 20, 2012 12:54 PM
Friday, July 20, 2012 12:54 PMModerator -
Yeah. Thanks.!Friday, July 20, 2012 1:14 PM