jquery $ .post函数调用顺序

时间:2009-11-10 01:46:19

标签: jquery

在下面的jquery函数中,有人可以向我解释为什么“第二个”在“第一个”之前被执行了吗?我假设整个$ .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");
}

这将引发第一个警报,然后是第二个警告。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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