【问题标题】:jqgrid - saveRow url throwing an exceptionjqgrid - saveRow url 抛出异常
【发布时间】:2012-02-02 02:30:07
【问题描述】:

在内联编辑模式下,点击“保存”会报错。

var rowSave = function(id){     
    jQuery("#myjqgrid").jqGrid('saveRow',id,{
        "succesfunc": function(response) {
            return true; 
        },                                  
        "url": myjqgrid.json
        "mtype": "GET"
    });
}

是不是因为url设置为json

基本上,我在第一次加载网格时会收到 JSON 响应。在我以内联编辑模式编辑行后,编辑后的数据应该发送到服务器。当数据保存在服务器上时,它应该返回更新的 JSON,并且网格行数据应该使用更新的 JSON 响应进行更新。

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    查看此文档页面:

    saveRow 部分中写道:

    url:如果已定义,此参数将替换选项数组中的 editurl 参数。如果设置为 'clientArray',则数据不会发布到服务器,而是仅保存到网格中(大概是为了以后手动保存)。

    还有一点:

    除了 url (或 editurl) 为 'clientArray' 时,当调用此方法时,特定行中的数据以 name: value 格式 POST 到服务器,其中 name 是 colModel 中的名称,值为新值。

    所以您似乎需要在此处提供将接受数据的服务器 URL。在同一页面上的一些示例中,您可以看到如下内容:

    ...
    editurl: "server.php",
    ...
    

    【讨论】:

    • 感谢您的回复。我确实浏览了 wiki 上的文档。这是否意味着在我的rowSave() 中,url 的值应该是服务器端文件?这个文件会发回 JSON 吗? jqgrid 将如何更新?
    • 这应该是服务器端页面的 url,它将接受更改的数据,然后例如将其存储在数据库中。您可以使用jQuery("#grid_id").jqGrid('saveRow',"rowid", false, 'clientArray'); 变体在本地执行所有操作(即url 应该是'clientArray')。保存该行后,应该不需要从服务器进行更新,因为状态没有改变 - 您期望发生什么样的更新?我想如果你只是想重新加载网格,你可以使用successfunc回调。
    • 数据更新。因此,如果网格中的列具有值Client A,但它被编辑为Client B。我在url 中指定了服务器端页面。此服务器端页面将更改的数据存储在数据库中,并输出新的 JSON 响应。 jqgrid 会自动从 JSON 响应中提取编辑后的数据吗?这是否意味着 (1) 首次加载 jqgrid 和 (2) 保存行时 url 的值应该相同?
    • 客户端上的数据更新。客户端将更新发送到服务器。服务器无需将任何数据发送回客户端,因为客户端已经知道更新了什么。 url加载时是提供数据的页面的url。 url 在执行 saveRow 时与选项中的 editurl 相同,这是一个不同的页面,应该将数据存储在服务器上,而不是返回任何数据。如果你使用url: 'clientArray',所有的事情都会发生在客户端——它会存储在网格本身——这强调了它在执行saveRow时不会从服务器进行任何数据更新。
    • 我没有使用clientArray,因为我不想在客户端保存数据。数据应更新并存储在服务器上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多