按顺序运行两个ajax请求(仅在成功后调用)

时间:2012-10-19 17:29:38

标签: javascript ajax

我有一个关于多个ajax调用的简单问题,按顺序执行每个调用。我有一个按钮发布当前页面的表单(将表单值写入会话),然后我想在设置这些会话变量后调用另一个页面(GET)。

问题是,我在一个函数中运行了两个调用,如果第一个帖子没有及时完成,那么会话值就不会出现在另一个脚本上了。

这是我按钮的功能:

function generateFP() {
    $.post("test.php", $("#webcto_form").serialize());
    loadPage('getpage.php?page=fpreq','page_contents');
}

我的loadPage函数:

function loadPage(filename,id){
    $("#page_contents").load(filename);
}

是否可以将速记ajax($ .post / .load)与成功结合使用?我想在成功提交表单后更改我的generateFP以调用loadPage函数。

我已经看过标准的$ .ajax文档,解释了如何构建成功函数,但还没有使用我正在使用的语法找到任何信息。

2 个答案:

答案 0 :(得分:4)

jQuery Post方法允许成功处理程序(http://api.jquery.com/jQuery.post/):

function generateFP() {
    $.post("test.php", $("#webcto_form").serialize(), function(){
        loadPage('getpage.php?page=fpreq','page_contents');
    });
}

或者,您可以修改test.php脚本以返回第二次请求后的信息:

function generateFP() {
    $.post("test.php", $("#webcto_form").serialize(), function(data){
        console.log(data);
    });
}

其中data是test.php脚本的输出。

答案 1 :(得分:2)

这对你有用。您将在成功事件处理函数中调用loadPage函数。

function generateFP() {
    $.post("test.php", $("#webcto_form").serialize(), function(data){
       //this is the success callback function
       //data parameter holds the response returned from the post if you need it.
       loadPage('getpage.php?page=fpreq','page_contents');
    });  
}