jQuery Ajax成功变量

时间:2010-10-18 11:31:51

标签: php javascript jquery ajax

我有下一个功能。我的PHP脚本返回一个元素为error的数组,其值为'ERR':

var updatePaymentType = function(plan_pt_id, pt_id){
    var error = null;
    var data = new Object()
    data["function"]             = "update";
    data["payment_type_id"]      = pt_id;
    data["plan_payment_type_id"] = plan_pt_id;
    data["data"]            = $("#saveform").serializeArray();
    $.ajax({
        type: "POST",
        url: "<?=ROOT_PATH?>/commission/plan/edit/id/<?=$this->editId?>",
        data: data,
        dataType: "json",
        success : function (data)
        {
            error = data['error'];
            alert(error); // All works. Output ERR
        }
    });
    alert(error); // Not work. Output null
    return error;
};

我的函数应该返回错误。但它返回null。 非常感谢你。

1 个答案:

答案 0 :(得分:6)

AJAX请求是异步的,这意味着在您已经返回之后之后才设置该值(success处理程序稍后运行 ,当服务器响应时数据)。

返回错误类型,您必须使其与async: false同步,如下所示:

$.ajax({
    async: false,
    type: "POST",
    ...

但这会锁定浏览器,最好使用success回调中的值调用任何内容,如下所示:

    success : function (data)
    {
        var error = data['error'];
        functionThatTakesError(error);
    }