我正在尝试在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用于我的项目。 集成很快,我很高兴用“jqGrid”更改了“DataTable”,但是当我完成测试后,通过调用snippet将绝对路径更改为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 a GET变量“id”。这在其他环境中可能没有问题,但MODx不可能存在问题。
我的问题是如何更改POST变量“id”jqGrid的名称,而不更改jqGrid的来源?
同时想问一下,你可以自定义导入一个选择值而不是索引
trame 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.I希望GOD“Oleg”帮助我:)答案 0 :(得分:1)
我不知道也不使用MODx。不过我希望您的问题是:如何重命名id
参数的名称,使其与MODx使用的id
参数不冲突。
如果我理解您的问题是正确的,您应该添加额外的prmNames参数,该参数设置编辑操作中使用的id
参数的新名称:
prmNames: {id: 'myId'}
该示例会将默认的id
参数名称({id: "id"}
)重命名为您应该在服务器部分中的myId
。