关于发布请求

时间:2016-03-19 19:18:26

标签: javascript php callback

说我有代码:

var testVar = 0;
var newVar = "";

function(){
    var info = "hello";
    $.post("test.php", {"info":info}, function(data){
        if(data == "success"){
             testVar = 1;
        }
        else{
             testVar = 0;
        }
    });
    $.post("new.php", {"testVar":testVar}, function(data2){
        if(data2 == "success"){
            newVar = "Complete";
        }
        else{
            newVar = "Failed";
        }
    });
}

假设test.php返回“success”,new.php需要一个1 for testVar才能返回成功,如何获得newVar的“Complete”?我猜第二个发布请求会在第一个请求发生之前发生。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

var testVar = 0;
var newVar = "";

var secondFunction = function(){
     $.post("new.php", {"testVar":testVar}, function(data2){
        if(data2 == "success"){
            newVar = "Complete";
        }
        else{
            newVar = "Failed";
        }
    });
};
function(){
    var info = "hello";
    $.post("test.php", {"info":info}, function(data){
        if(data == "success"){
             testVar = 1;
        }
        else{
             testVar = 0;
        }
        secondFunction();
    });

}

答案 1 :(得分:0)

如果第二个请求的参数取决于来自第一个请求的结果,则 然后确保按顺序发送请求,
意思是在您收到第一个{。}后的响应后才发送第二个post

此外,您应该准备好您的回复,以包含成功标志和有效负载标志。

成功运作

{success : "true", message : "operation successful", value : "1"}

操作失败

{success : "false", message : "operation failed", value : "0"}

考虑以下示例

function(){

    var info = "hello";

    $.post("test.php", {"info":info}, function(data){

        if (data.success != false){

            $.post("new.php", {"testVar":data.value}, function(data){
                if (data.success != false){
                    console.log(data.message) // this is the success message from the second request
                    // process the data from the second response,
                    // var = data.value ...
                }
                else{
                    console.log(data.message) // handle the failed state for the second request
                }
            },"json");

        }
        else{
            console.log(data.message)
        }

    },"json");

}

第二个请求只有在第一个请求成功后才会被触发 您的回复具有一定的一致性,value的内容可以是单个值,数组或对象 拥有成功和消息的价值,您可以轻松跟踪发生的事情,并在需要时提出通知。