【问题标题】:jQgrid : Custom function ajax not workingjQgrid:自定义函数ajax不起作用
【发布时间】:2013-06-28 06:19:48
【问题描述】:

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

【问题讨论】:

  • check_269.php 中的方法名称是什么?
  • check_269.php 中基于此 ajax 发送的数据的简单查询
  • ajax 是异步的...您的结果将在 ajax 调用发生时返回,并且不会等待 ajax 函数完成..
  • 是的,我也不明白你为什么要使用像 result[boolean, string] 这样的语句
  • 在假设结果为空之后? null 在 JavaScript 中是一个空对象,所以你最好使用数组或者(如果你真的需要一个对象)result.status 和 result.msg 或者像这样的smth

标签: jquery jqgrid jqgrid-php


【解决方案1】:

首先变量successsuccess 回调中没有改变。你应该换行

result[true, value1 + "Success"];

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

并以同样的方式修改result[false, value1 + "no se permite"];这一行。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      相关资源
      最近更新 更多