如何返回ajax结果成功?

时间:2017-04-01 11:00:42

标签: javascript jquery ajax

即使这个问题已经得到解答,我已经通过其中一些问题,但我仍然无法找到我做错的事。

基本上我有一个返回ajax成功结果的函数:

var Functioncalling = function(id){
var Infotoreturn=null;
formdata = {
    'id': id
};

$.ajax({
    type: 'POST', 
    url: 'http://localhost:20012/pr/servlet', 
    data: formdata,
    contentType: "text/html",
    success: function(result){
       console.log("1="+result);
       Infotoreturn = result;
    }
});
console.log("2="+Infotoreturn);
return Infotoreturn;
}

调用该函数:

var idreturned = Functioncalling(idvalue);
console.log("3="+idreturned);

现在,在我的第一个控制台输出中,我正好得到了我想要的数据。但第二和第三个输出都是空的。

1 个答案:

答案 0 :(得分:0)

除了@Utkanos所说的,你最后的回复陈述还为时过早。

变量Infotoreturn将为null,因为Ajax调用是异步执行的,即并行执行。主函数将在其操作完成之前返回。控制台将记录结果,但变量为时已晚。

实际上,Ajax调用在后台延迟,因此return语句仍然具有原始值。

您可以使用更高级的功能,例如Promises&延迟对象,或者您可以将下一步写为回调。

以下是使用回调的示例:

var Functioncalling = function(id,callback) {
    var Infotoreturn=null;
    formdata = {
        'id': id
    };

    $.ajax({
        //  existing code
        success: function(result){
           console.log("1="+result);
            //  Modification
           callback(result);
        }
    });
    //  nothing to report yet
}
function where_I_need_the_result(result) {
    console.log('I got: '+result);
}

Functioncalling(id,where_I_need_the_result);