【问题标题】:How do you create a jqGrid JSON error response from PHP and then respond to it with jqGrid javascript?如何从 PHP 创建一个 jqGrid JSON 错误响应,然后用 jqGrid javascript 响应它?
【发布时间】:2011-09-19 15:24:37
【问题描述】:

我一直在搜索互联网和 jqGrid 文档,但我找不到任何关于创建、更新、删除 (CRUD) 操作的 JSON 响应格式的信息。当然应该有一条从 PHP 返回到 jqGrid 的 JSON 消息来告诉它 CRUD 操作是否成功?此消息的格式是什么,您将如何编写 jqGrid 的 javascript 代码以响应该消息?我不是一个很好的程序员,因此非常感谢您提供完整的代码答案。

谢谢

【问题讨论】:

    标签: php javascript json jqgrid crud


    【解决方案1】:

    创建、删除和更新不需要使用响应。

    例如如果您执行创建操作,您正在调用“ajax 操作”,它将您的数据添加到数据库中。

    现在有两种可能:

    1. 创建操作成功
      • 什么都不返回,表示空字符串
      • (只要jqgrid收到200响应,一切正常)
    2. 创建操作失败
      • 只需抛出一个带有修改的响应头的异常

    如果 jqGrid 收到非 200 响应代码,它本身会显示错误!

    try {
        // insert something in your db
        // ok = true means everything fine
        // ok = false means something unpredictable happened
        if (!$ok) {
           throw new Exception('error');
        }
    
    } catch (Exception $e) {
    
        header("Status: 500 Server Error caused by dbinsert jqgrid");
        var_dump($e->getMessage());
    }
    

    抱歉代码,但这是我现在最快的 :) 我将 jqGrid 与 Zend 框架结合使用,ZF 默认使用 500 个异常响应代码(至少是我的模板)

    成功更新/删除/创建后,您必须重新获取整个 jqGrid 数据。

    jQuery("#your_jqgrid_id").jqGrid().trigger('reloadGrid');
    

    没有其他机制。 (大约 6 个月前使用它,也许改变了)

    如果您想实现自己的错误/成功处理,只需以您想要的任何格式定义您自己的消息并在 ajax 成功函数回调中处理它。

    如果您需要更多代码并且不紧急,请给我留言。

    另外一个建议:不要期望立即了解 jqGrid。花点时间,尝试一些东西,玩它。您需要一段时间才能适应它。

    【讨论】:

    • 感谢您的帮助。尽管内联和表单编辑不能始终如一地工作,但很烦人。内联编辑显示我的 php 返回的正确错误消息,而表单编辑显示不同的消息。仍然必须弄清楚并使用 javascript 方面。还有一个问题,当您将字符串输入数字字段时,mysql有时会失败,有时不会(然后它只是将零放入数字字段)。
    • 这是个问题。您必须检查插入的数据是否与您的 mysql 表匹配。但这可以在 ajax 调用中完成。例如您只需要字段中的数字,然后检查它是否是数字。如果我的回答让你满意,请采纳。如果您在堆栈溢出时不接受此处的答案,那么您的问题将很难得到任何人的回答。 (这是你的接受率)
    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多