【问题标题】:Update a OnDemandGrid based on dstore/Rest result in POST and not PUT在 POST 而不是 PUT 中根据 dstore/Rest 结果更新 OnDemandGrid
【发布时间】:2017-11-22 15:26:40
【问题描述】:

我很困惑。 我有一个可编辑的 OnDemandGrid,在它下面我有一个 dstore/Rest 集合指向我的后端(在 PHP 中)。

OnDemandGrid 与编辑器混合在一起...我可以编辑我的数据,但我无法保存它。我在服务器端收到的是一个“POST”请求,要求在集合中插入一整行......而且我从未收到更新。

我不应该收到一个 PUT 请求吗?我在数据中使用了 id...

这是客户端部分:

function (...)
{
        var EditGrid = declare([ OnDemandGrid, Keyboard, Editor ]);
        var coll = new Rest({
                                        target: 'my.php/x/',
                                        idProperty: 'id',
                                        rangeStartParam: 'range',
                                        rangeCountParam: 'limit',
                                        sortParam: 'sort'
                                });    
        var grid = new EditGrid({ columns: { 
                                     user_name:{
                                       label: 'User name',
                                      editor: 'text',
                                      editOn: 'click, dbclick',
                                    autoSave: true,
                                 }},
                               collection: coll }, 'grid' );
        grid.startup();
}

我正确接收到 GET 查询以填充表格...然后,在编辑一行并点击“返回”后,我得到一个 POST!

这里显示的服务器端有点复杂......基本上,在 GET 上我执行 SQL 查询并将结果 json 化,而在 POST 上我只返回这个:

http_response_code(201);
header("location: ".$_SERVER['PATH_INFO'].$id);

$id 与我从请求中收到的 ID 相同...

POST 之后,我没有收到任何其他信息。在 POST 数据中,我只收到旧的、未修改的行的副本……我从来没有收到“新”的编辑数据。

在我看来,我应该在某个时候收到 PUT 请求...我尝试了浏览器调试器、服务器日志,但在任何地方都没有。

有人可以帮我吗?

【问题讨论】:

    标签: javascript php dojo dgrid dstore


    【解决方案1】:

    我终于修好了。

    这非常令人费解,而且很少记录所有这些混乱。我不得不深入研究浏览器调试器和 dgrid/Rest 源代码。

    所以问题出在我的 REST 后端。事实证明,dgrid 在 PUT/POST 请求修改项目之前执行 GET,并且它通过询问特定的“id”执行只有一条记录的 GET。有道理。

    嗯,我的后端会返回一个包含一个元素的数组,格式为 JSON。这是错误!这没有被 dgrid 正确解析,它导致了 POST 而不是 PUT。

    一旦我修复了 GET 后端以返回单个 JSON 项而不是包含一个 JSON 项的数组,dgrid 就开始发送正确的 PUT。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2021-01-11
      • 2012-07-18
      相关资源
      最近更新 更多