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

从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,

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


提前谢谢

它不起作用,因为返回值在作为参数提供给$.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调用“返回”该值。