How to call synchronous ajax call in alfresco?

霸气de小男生 提交于 2019-12-02 00:29:11

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
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!