从jQuery ajax函数保存响应

Save response from jQuery ajax function

本文关键字:保存 响应 函数 ajax jQuery      更新时间:2023-09-26

我有一个自定义函数,它调用ajax请求,并且我能够将响应数据保存到变量并返回它。0总是返回,但是alert显示例如3712。

函数如下:

function getNo(index, val) {
var $ret = 0;
$('body').showLoading();
$.ajax({
    type: 'POST',
    url: BASE_URL + 'tools/no.php?id='+index+'&value='+val,
    data: $("#form").serialize(),
    cache: false,
    success: function(data) {
        $('body').hideLoading();
        alert('data: ' + data);
        $ret = data;
    }
});
return $ret;
}

由于ajax异步的,当return $ret;执行时,响应还没有准备好,所以返回它的初始值0

您必须在success回调函数中做您想做的事情,而不是返回。

由于异步调用,这将返回ZERO。相反,我建议您传递一个回调方法来处理响应。

请看下面的例子:

function getNo(index, val, callback) {
    var $ret = 0;
    $('body').showLoading();
    $.ajax({
        type: 'POST',
        url: BASE_URL + 'tools/no.php?id=' + index + '&value=' + val,
        data: $("#form").serialize(),
        cache: false,
        success: function (data) {
            $('body').hideLoading();
            callback(data);
        }
    });
    return $ret;
}
//USAGE
getNo(3, "value", function (data) {
    //do something with data responded from the server
    alert(data);
});

因为Ajax中的"A"代表异步,所以在Ajax调用找到返回成功函数的方法之前执行return $ret;

与其尝试返回值,不如尝试调用ajax成功块中的函数。

success: function(data) {
    $('body').hideLoading();
    alert('data: ' + data);
    $ret = data;
doSomething(data);
}