说我有代码:
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”?我猜第二个发布请求会在第一个请求发生之前发生。
答案 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
的内容可以是单个值,数组或对象
拥有成功和消息的价值,您可以轻松跟踪发生的事情,并在需要时提出通知。