Py学习  »  Jquery

jquery$.post函数调用顺序

tj111 • 5 年前 • 547 次点击  

在下面的jquery函数中,有人能解释为什么“second”在“first”之前被执行吗?我假设整个$.Post请求应该在浏览器进入下一行代码之前完成,但这似乎没有发生。

function getGUID () {
$.post(getGUIDScript, function(data, textStatus) { 
    alert("first");
    GUID = data;
    }, 
    'text');

    alert("second");        
}

感谢下面的回答。为了子孙后代的利益,上面的代码可以写如下所示,等待完成后再继续。

function getGUID () {
$.ajax({
type:   "POST",
url:    getGUIDScript,
async:  false,
success:    function(data) {
    alert("first");
    GUID = data;
}
});
    alert("second");
}

这将触发第一次警报,然后触发第二次警报。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30859
 
547 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Andy Gaskell
Reply   •   1 楼
Andy Gaskell    14 年前

如果要进行同步Ajax调用,可以将asyc设置为false。见 http://docs.jquery.com/Ajax/jQuery.ajax#options

Steven Xu
Reply   •   2 楼
Steven Xu    14 年前

$.post() 初始化将回调作为参数的异步POST请求。当服务器返回对POST请求的响应时,将执行回调。

tvanfosson
Reply   •   3 楼
tvanfosson    14 年前

POST是异步完成的,因此在第一个语句完成之前执行以下语句。如果需要它们是同步的,则需要使用$.Ajax并将Async参数设置为false。更好的是,在POST执行的Ajax调用完成后,使用POST的回调机制等待并执行后续操作。