从JavaScript中的AJAX调用返回POST结果
在JS中,我尝试执行以下操作:从JavaScript中的AJAX调用返回POST结果,javascript,jquery,Javascript,Jquery,在JS中,我尝试执行以下操作: function getSuccessForTest(testName,version,fromRev,toRev,res) { var params = { "methodToRun":"getSuccessForTest", "version":version, "startRev":fromRev, "endRev":toRev,
function getSuccessForTest(testName,version,fromRev,toRev,res) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
return parseInt(data.toString(),10);
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res);
我做错了什么?无论何时调用getSuccessForTest,我都会在Stats.php中获得POST结果,但该值不会返回给调用函数
提前谢谢 它不起作用,因为返回值在作为参数提供给$.post的回调函数中。由于您处理的是异步的ajax请求,因此还需要使用getSuccessForTest回调。试试这个:
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
//return parseInt(data.toString(),10);
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function (data) {
alert(data); // This would be the value you wanted to return
});
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function(res) {
alert(res)
} );
它不起作用,因为返回值在作为参数提供给$.post的回调函数中。由于您处理的是异步的ajax请求,因此还需要使用getSuccessForTest回调。试试这个:
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
//return parseInt(data.toString(),10);
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function (data) {
alert(data); // This would be the value you wanted to return
});
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function(res) {
alert(res)
} );
这是因为值返回到匿名函数(函数(数据){…)。请使用回调。请尝试以下操作:
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
//return parseInt(data.toString(),10);
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function (data) {
alert(data); // This would be the value you wanted to return
});
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function(res) {
alert(res)
} );
这是因为值返回到匿名函数(函数(数据){…)。请使用回调。请尝试以下操作:
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
//return parseInt(data.toString(),10);
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function (data) {
alert(data); // This would be the value you wanted to return
});
function getSuccessForTest(testName,version,fromRev,toRev,res, callback) {
var params = {
"methodToRun":"getSuccessForTest",
"version":version,
"startRev":fromRev,
"endRev":toRev,
"testName":testName
};
$.post("Stats.php", params,function(data){
callback(parseInt(data.toString(),10));
}, "json");
}
getSuccessForTest(data[i],version,fromRev,toRev,res, function(res) {
alert(res)
} );
从stats.php返回时使用
echo
。如果这不能解决您的问题,那么我想知道您在ajax调用处理脚本中使用的返回方法。从stats.php返回时使用echo
。如果这不能解决您的问题,那么我想知道返回方法是什么您正在使用ajax调用处理脚本
return parseInt(data.toString(),10);
你不能那样回来。
要么在某个全局变量中赋值,要么在其中使用数据进行处理
你不能那样回来。
要么分配一些全局变量,要么使用所有这些的重复数据进行处理所有这些的重复:所有这些的重复:可能的重复服务器端可能也有问题,但实际问题是您不能简单地“返回”由于其异步性质,该值形成Ajax调用。服务器端可能也存在问题,但实际问题是,由于其异步性质,您不能简单地从Ajax调用“返回”该值。