我有下一个功能。我的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
。
非常感谢你。
答案 0 :(得分:6)
AJAX请求是异步的,这意味着在您已经返回之后之后才设置该值(success
处理程序稍后运行 ,当服务器响应时数据)。
要返回错误类型,您必须使其与async: false
同步,如下所示:
$.ajax({
async: false,
type: "POST",
...
但这会锁定浏览器,最好使用success
回调中的值调用任何内容,如下所示:
success : function (data)
{
var error = data['error'];
functionThatTakesError(error);
}