【问题标题】:jquery JSON node deletejquery JSON节点删除
【发布时间】:2012-06-25 12:15:38
【问题描述】:

我正在用 jax-rs 开发一个 web 应用程序,我用 jquery 做了一个休息客户端。我将结果作为 json 或 xml,然后将它们显示到 html 表。为了方便表格,我使用 JqGrid 库。我的问题是,例如 Jqgrid 想要像下面这样的 json 对象;

[
        {yaziNo:"1",yazar:"abc",yazi:"test",tarih:"2007-10-01"}, 
        {yaziNo:"2",yazar:"cdfe",yazi:"test2",tarih:"2007-10-01"},
        {yaziNo:"3",yazar:"cdfe",yazi:"test3",tarih:"2007-10-01"}, 
        {yaziNo:"4",yazar:"abc",yazi:"test",tarih:"2007-10-01"}, 
        {yaziNo:"5",yazar:"cdfe",yazi:"test2",tarih:"2007-10-01"}, 
        {yaziNo:"6",yazar:"abc",yazi:"test3",tarih:"2007-10-01"},
        {yaziNo:"7",yazar:"cdfe",yazi:"test",tarih:"2007-10-01"},
        {yaziNo:"8",yazar:"abc",yazi:"test2",tarih:"2007-10-01"}, 
        {yaziNo:"9",yazar:"abc",yazi:"test3",tarih:"2007-10-01"}     ]

但是,从我的休息服务器返回的 JSON 如下所示;

{"yazi":
[{"tarih":"26.01.2012","yazar":"sdasdadsadasda","yazi":"gdfgdfgd","yaziNo":"1756"},
{"tarih":"26.01.2012","yazar":"sdasdadsadasda","yazi":"gdfgdfgd","yaziNo":"1755"},
{"tarih":"26.01.2012","yazar":"sdasdadsadasda","yazi":"gdfgdfgd","yaziNo":"1754"},
{"tarih":"26.01.2012","yazar":"sdasdadsadasda","yazi":"gdfgdfgd","yaziNo":"1753"},
{"tarih":"26.01.2012","yazar":"sdasdadsadasda","yazi":"gdfgdfgd","yaziNo":"1752"}]
}

如何删除“yazi”节点但保留在里面。

编辑:

jQuery("#list27").jqGrid({
    url:'http://localhost:43842/KodcuComRESTful/kodcuRS/yazilar',
    datatype: "json",
    height: 255,
    width: 700,
    jsonReader: {root: "yazi", repeatitems: false},
    colNames:['Yazi No','Yazar', 'Yazi', 'Tarih'],
    colModel:[
        {name:'yaziNo',index:'yaziNo', width:80, sorttype:"int"},
        {name:'yazar',index:'yazar', width:180}, 
        {name:'yazi',index:'yazi', width:370}, 
        {name:'tarih',index:'tarih', width:100, align:"right",sortype:"date"}
    ],
    rowNum:10,
    rowTotal: 2000,
    rowList : [20,30,50],
    loadonce:true,
    mtype: "GET", 
    rownumbers: true,
    rownumWidth: 40, 
    gridview: true, 
    pager: '#pager27',
    sortname: 'yaziNo',
    viewrecords: true,
    sortorder: "asc",
    caption: "Loading data from server at once"
});

【问题讨论】:

    标签: json jqgrid


    【解决方案1】:

    我认为从服务器返回的数据没有问题。您应该只使用 jqGrid 的 jsonReader 选项,它会通知 jqGrid 如何从服务器响应中读取数据。例如

    jsonReader: {root: "yazi", repeatitems: false}
    

    更新The demo 使用您发布的确切 JSON 数据,并在网格中显示结果。我使用了您发布的 JavaScript 代码并将 height: 255 替换为 height: "auto" 以获得更紧凑的结果。

    我在您的代码中看到的唯一问题是完整 URL 的使用:url:'http://localhost:43842/KodcuComRESTful/kodcuRS/yazilar'。由于same origin policy 限制,无法从同一站点和端口的另一个源获取每个 Ajax 的 JSON 数据。因此,在使用 datatype: "json" 的情况下,您应该始终使用 relative URL 路径,例如 url:'/KodcuComRESTful/kodcuRS/yazilar'

    【讨论】:

    • 再次感谢 Oleg,我完全重新安排了我的代码,我想删除、添加、更新操作。我在寻呼栏左侧添加了添加、删除、编辑按钮,但我不知道如何使用 jqGrid 实现 /POST 或 /DELETE 操作。我可以用纯 ajax 函数做到这一点,但我认为 jqGrid 做得最好?
    • 我认为 JqGrid 最好,但文档很糟糕。
    • @RahmanUsta:我同意 jqGrid 文档的许多部分仅供已经了解 jqGrid 的人参考。初学者没有很好的介绍。添加/编辑/删除操作实现的下一个问题还有另一个重要方面:所有功能都将在服务器上实现。因此,您需要使用您使用的语言和框架中的代码示例。服务器端的选项太多了。我不知道你用的是哪一个。
    • 我正在使用无状态 EJB 用于带有 Java EE Jax-RS 的 Restful 端点。我已经给你发了一封电子邮件,我的问题是什么。我读了你的帖子@[link]trirand.com/blog/?page_id=393/feature-request/rest-support/[/…,简单地说; params.url += '/sil/' + encodeURIComponent(postdata);,发布数据产生行 id,但我想获取行的主要 id.sil 进行删除。我试过 postdata.yaziNo 然后我无法得到它。
    • @RahmanUsta:我使用 ASP.NET,所以无法直接帮助您。您可以找到有关 RESTful 服务 hereherehere 的更多信息。您应该一个接一个地实现一个功能。您可以从编辑或删除开始。存在“主 ID”的问题可能是因为您在没有id 的情况下填充网格。如果yaziNo 包含唯一值,您可以将key: true 添加到列定义中。然后将使用来自yaziNo 列的rowid。
    猜你喜欢
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多