0

我在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
4

2 回答 2

0

首先,变量success在回调内部没有改变。success你应该换行

result[true, value1 + "Success"];

result = [true, value1 + "Success"];

并以相同的方式修改该行result[false, value1 + "no se permite"];

主要问题是不需要任何服务器端验证功能。如果数据将被保存,服务器应该对输入数据进行验证。如果数据错误,服务器应该返回一些错误描述和一些错误 HTTP 代码。例如,如果您使用表单编辑,则可以指定errorTextFormat回调以在出现错误时解码服务器响应。默认情况下,jqGrid 会将错误服务器响应的主体解释为 HTML 片段,该片段将显示给服务器。

于 2013-06-28T06:33:05.687 回答
0

ajax 是异步的.. 你得到 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 ');
    }
});

}    

我猜你错过=了设置结果数组。

于 2013-06-28T06:33:28.267 回答