jQuery:ajaxSubmit作为同步调用

时间:2010-12-29 15:56:59

标签: javascript jquery ajax

我有一个中央JavaScript函数:

function storeProperties() {
    $("form#systemProperties").ajaxSubmit({
        data: $("form#systemProperties").serialize(),
        type: 'post',
        url: '?url=super',
        success: function(response) {
            /* output & co */
       }
    });
}

这种方法有时是自己调用的,有时是用不同的方法调用的,即:

function sendMessage() {
    storeProperties(); /* it's a precondition */

    /* let's do some magic */
}

问题是storeProperties()在处理ajaxSubmit时异步完成。不幸的是,魔法不应该在storeProperties()完成之前启动。

我怎样才能同步storeProperties()来电或完成第二项功能?请注意,有多个功能调用storeProperties()

非常感谢!

1 个答案:

答案 0 :(得分:1)

将Let's do magic功能放在单独的函数中,然后将其作为参数传递给storeProperties。即。

    function storeProperties(successFunc)
{     
    $("form#systemProperties").ajaxSubmit
    (
        {         
            data: $("form#systemProperties").serialize(),         
            type: 'post',         
            url: '?url=super',         
            success: function(response)
            {             
                /* output & co */        
                if(successFunc && (typeof successFunc == 'function'))
                {
                    successFunc(response);
                }
                                  else
                                  {
                                   //do the default stuff
                                  }
            }     
        }
    ); 
} 

function sendMessage() 
{     
    storeProperties(function(data){doTheMagic(data);}); 
} 

function doTheMagic(data)
{
    /* let's do some magic */ 
}

编辑:更新了storeProperties以接收函数作为参数