jQgrid:自定义函数ajax无法正常工作

时间:2013-06-28 06:19:49

标签: jquery jqgrid jqgrid-php

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

2 个答案:

答案 0 :(得分:0)

首先,变量successsuccess回调中未更改。你应该改变一行

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 ');
    }
});

}    

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