从JavaScript中的AJAX调用返回POST结果

时间:2012-03-05 12:24:22

标签: javascript jquery

我想要做的是JS中的以下内容:

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结果,但该值不会返回给调用函数。

提前致谢!

4 个答案:

答案 0 :(得分:3)

它不起作用,因为返回是在$ .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
});

答案 1 :(得分:1)

将beacuse值返回给匿名函数(function(data){...)。使用回调。试试这个:

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)
    } );

答案 2 :(得分:0)

从stats.php返回时,请使用echo。如果这不能解决你的问题,那么我想知道你用于ajax调用处理脚本的返回方法是什么。

答案 3 :(得分:0)

return parseInt(data.toString(),10);

你不能那样回来。 要么分配一些全局变量,要么使用数据进行处理