I have one custom property say XYZ. I want to validate it on blur event. I am calling one web-script using Ajax from JavaScript(Client) but its not waiting for
You need to use the callbacks available on the function as these are called after the operation has completed. You have one failureCallback and one successCallback.
Here is an example of a JavaScript jsonPost function using a successCallback:
Alfresco.util.Ajax.jsonPost(
{
url: Alfresco.constants.PROXY_URI + "my/webscript?nodeRef=" + nodeRef,
successCallback: {
fn: function (o) {
//Make further calls
},
scope: this
},
failureMessage: "Server Error"
});
If you want to block further code then you need to overwrite the relevant part of Alfresco and move the calls to the callback.
You can simulate an Alfresco AJAX both sync and async as follows:
function myAlfrescoAjax(wsUrl, async) {
// wsUrl: string, the url of your webscript
// async: boolean, a false value simulates synchronous
var simSync = {}; // define a local variable for simulation
Alfresco.util.Ajax.request(
{
method : "GET",
url: Alfresco.constants.PROXY_URI + wsUrl,
successCallback: {
fn: function (response) {
// insert code for succesful response
if (!async) clearTimeout(simSync); // resume execution when ready (see below)
},
scope: this
},
failureMessage: "Server Error",
execScripts: true
});
// now immediately stop execution (if synchronous) with a timeout that takes longer than you ever expect the time the Ajax call will take
// note that this timer is killed on succes of the response function in the Ajax call
if (!async) {
simSync = setTimeout(function(){
// insert code for the unexpected case the timer elapses fully
}, 5000);
}
return
}