Normally, I would have used .getJSON(remotePageUrl,data,function(json){
//process JSON data here, for example
//if (json.length>0)
{
alert(json[0].Name);
}
});
to get a JSON object returned from the remotePageUrl that processes my request asynchronously and send back a JSON format string like ‘{“Name”:”steve”,”ID”: “1234”}’
But today, I found out that the .getJSON() cannot be set to process data request synchronously. In order to send data to remotePageUrl and return result synchronously (reason for this was because I had a jQuery dialog to be populated with data returned from this call before the dialog was displayed; first I used $.getJSON(), the dialog showed up before the data was processed on server side and returned), I needed to use $.ajax(). Here is the ajax call that actually worked to serve my purpose well:
var dataUrl = “<%=root%>/ajax/AsyncEventDataHandler.aspx”;
var userid; var eventTypeId; var userEventDesc=”;
var responseText = $.ajax({
url: dataUrl,
type: ‘GET’,
dataType: ‘JSON’,
//dataType: ‘text’,
contentType: ‘application/json’,
data: “UserCalendarID=” + userCalendarID,
async: false,
success: function (response) {
var data=$.parseJSON(response);
userid = data.UserID;
eventTypeId = data.EventTypeID;
userEventDesc = data.UserEventDesc;
},
error: function (msg) { alert(“error: ” + msg); }
}).responseText;
Here the response inside the function() is the same as $.ajax(….).responseText, and it should have a proper JSON string format or the jQuery.parseJSON() function will fail. The correct format example: ‘{“UserID”:”1211″,”EventTypeID”:”1″,”UserEventDesc”:”meeting”}’. I tried to put single quote around the field name and it did not go through $.parseJSON(). For example, this will not be parsed: “{‘UserID': ‘1211’,’EventTypeID':’1′,’UserEventDesc':’meeting’}”.
For that I attributed to this article at jQuery api site at: http://api.jquery.com/jQuery.parseJSON/. Otherwise, I would probably wasted more time in figuring out why the parsing was failing.