change your code to:
function ChangePurpose(Vid, PurId) { var Success = false; $.ajax({ type: "POST", url: "CHService.asmx/SavePurpose", dataType: "text", async: false, data: JSON.stringify({ Vid: Vid, PurpId: PurId }), contentType: "application/json; charset=utf-8", success: function (data) { Success = true; }, error: function (textStatus, errorThrown) { Success = false; } }); //done after here return Success; }
You can only return the values from a synchronous
function. Otherwise you will have to make a callback
.
So I just added async:false,
to your ajax call
Update:
jquery ajax calls are asynchronous by default. So success & error functions will be called when the ajax load is complete. But your return statement will be executed just after the ajax call is started.
A better approach will be:
// callbackfn is the pointer to any function that needs to be called function ChangePurpose(Vid, PurId, callbackfn) { var Success = false; $.ajax({ type: "POST", url: "CHService.asmx/SavePurpose", dataType: "text", data: JSON.stringify({ Vid: Vid, PurpId: PurId }), contentType: "application/json; charset=utf-8", success: function (data) { callbackfn(data) }, error: function (textStatus, errorThrown) { callbackfn("Error getting the data") } }); } function Callback(data) { alert(data); }
and call the ajax as:
// Callback is the callback-function that needs to be called when asynchronous call is complete ChangePurpose(Vid, PurId, Callback);