我在jQgrid验证的自定义函数中使用了ajax调用,
这是我的功能
function customFuction(value1, colname) {
var result = null;
$.ajax({
url: "../ajax/check_269.php",
type: "POST",
data: {
val: value1,
col: colname,
parentId: row_id
},
dataType: "html",
async: false,
success: function (data) {
if (data == "error") {
result[false, value1 + "no se permite"];
} else {
result[true, value1 + "Success"];
}
},
error: function () {
alert('Error trying to validate car ');
}
});
return result;
}
它给我这样的错误
TypeError: result is null
答案 0 :(得分:0)
首先,变量success
在success
回调中未更改。你应该改变一行
result[true, value1 + "Success"];
到
result = [true, value1 + "Success"];
并以相同的方式修改行result[false, value1 + "no se permite"];
。
主要问题是不需要任何服务器端验证功能。如果将保存数据,则服务器应对输入数据进行验证。如果数据错误,服务器应返回一些错误描述和一些错误的HTTP代码。例如,如果您使用表单编辑,则可以指定errorTextFormat回调以在出现错误时解码服务器响应。默认情况下,jqGrid会将错误服务器响应的主体解释为将显示给服务器的HTML片段。
答案 1 :(得分:0)
ajax是asynchronus ..你得到null的原因是因为当ajax调用完成时,函数将返回结果为null并且不等待ajax调用完成..
一种方法是在ajax的成功回调函数中返回结果,以确保ajax调用完成。
function customFuction(value1, colname) {
var result = null;
$.ajax({
url: "../ajax/check_269.php",
type: "POST",
data: {
val: value1,
col: colname,
parentId: row_id
},
dataType: "html",
async: false,
success: function (data) {
if (data == "error") {
result = [false, value1 + "no se permite"];
} else {
result = [true, value1 + "Success"];
}
return result;
},
error: function () {
alert('Error trying to validate car ');
}
});
}
我想你错过了=
来设置结果数组。