0

我正在尝试在 MODx 中打开 jqGrid,就像使用“$.ajax”进行其他数据交换一样,将调用从 URL 移动到受密码保护的资源,然后从那里调用 PHP 中的代码片段,因此安全框架,保证ajax调用

这是块 $.ajax 的一个示例:

      $.ajax ({
                url :'[[~94]]',
                type: 'post',
                async: false,
                success: function(rsp) {
                                $.Cookie("xxxxxx-tipodirlist", rsp);
                          }

             });

*[[~94]] 是一个受保护的资源,在片段调用中 [[!SnpBridgedata_blabla]]

该系统在整个 Web 应用程序中运行良好,安全可靠地接收和发送数据。

现在一个客户问我一个完整的应用程序,想要一个好的网格中的 Web 结果,在看到一些代码后,我决定在我的项目中使用 jqGrid。集成很快,我很高兴将“DataTable”更改为“jqGrid”,但是当我完成测试时,通过调用代码片段将绝对路径更改为 xxxxxx.php

这是 jqGrid 的代码:

  chargeSedi function (idx)
  {
    // Test with file. Php !work fine!
    // Var esURL = 'http://xxxxx.com/xxxxxxx.php?IDX =' + idx;
    // Test with MODx resource  !not work!
    esURL var = '[[~ 97]] & IDX =' + idx;
    csURL var = '[[~ 96]] & IDX =' + idx;
    tipodirlist = $ var. cookie ("xxxxxxxx-tipodirlist");
    tiposedelist = $ var. cookie ("xxxxxxx-tiposedelist");


  $("#sediTable").ready(function() { 
      $("#sediTable").jqGrid({ 
              url:csURL, 
              datatype: "json",
              height: 250, 
              autowidth:true,
              colNames:[ 'ID','CODICE', 'NOME','TDIR', 'DIR','COMUNE', 'PROVINCIA','CAP', 'TSEDE','NOTA'], 
              colModel:[ 

 {name:'ID',index:'ID', width:25, editable: false}, 
 {name:'CODICE',index:'CODICE', width:60, editable: true}, 
 {name:'NOME',index:'NOME', width:60, editable: true}, 
 {name:'TDIR',index:'TDIR', width:60, editable: true,edittype:"select",editoptions:{value:tipodirlist}},         
 {name:'DIR',index:'DIR', width:200, sortable:false,editable: true},
 {name:'COMUNE',index:'COMUNE', width:170, sortable:false,editable: true},
 {name:'PROVINCIA',index:'PROVINCIA', width:170, sortable:false,editable: true},
 {name:'CAP',index:'CAP', width:40, sortable:false,editable: true},
 {name:'TSEDE',index:'TSEDE', width:90, editable: true,edittype:"select",editoptions:{value:tiposedelist}},       
 {name:'NOTA',index:'NOTA', width:170, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"10"}} ], 

      sortname: 'ID', 
      viewrecords: true, 
      sortorder: "desc", 
      loadonce: true,
      editurl: esURL , 
      caption: "Sedi" }); 

}); 

]

令我惊讶的是,MODx 拒绝访问 jqGrid ajax 调用,就好像你不在会话中一样,但是经过几个小时的测试和使用 wireshark 观察流量后,我意识到 jqGrid 发送了一个名为“id”的 POST 变量并调用 MODx 一个 GET 变量“ ID”。这在其他环境中是可能没有问题的,但是不可能 MODx 并且有问题。

我的问题是如何在不更改 jqGrid 源的情况下更改 POST 变量“id”jqGrid 的名称?

同时想问一下,可以自定义导入一个选择值而不是索引

电车 POST 示例:

            {Name: 'TDIR', index: 'TDIR', width: 60, editable: true, EditType: "select" editoptions: {value: tipodirlist}}

tipodirlist = 1:via;2:piazza;3:ect

TDIR=2

   CODICE=1&NOME=principale&TDIR=2&DIR=Roma&COMUNE=Torino&PROVINCIA=Torino&CAP=10000&TSEDE=2&NOTA=NO=edit&id=0

为了这:

TDIR=广场

   CODICE=1&NOME=principale&TDIR=piazza&DIR=Roma&COMUNE=Torino&PROVINCIA=Torino&CAP=10000&TSEDE=2&NOTA=NO=edit&id=0

无需过滤服务器上的结果。


我希望我已经解释清楚。正如我在问这个问题之前问自己的那样,团队“StackOverflow”

非常感谢你的问候

尼罗

PS.我希望上帝“奥列格”帮助我:)

4

1 回答 1

1

I don't know and don't use MODx. Nevertheless I hope that your problem is: how to rename the name of the id parameter to have no conflict with the id parameter used by MODx.

If I understand your question correct you should just add additional prmNames parameter which set the new name of id parameter used in editing operations:

prmNames: {id: 'myId'}

The example will rename the default id parameter name ({id: "id"}) to myId which you should you in your server part.

于 2011-08-22T16:55:13.347 回答