我想知道如果有人可能会有一些深入了解这一点。jqGrid是很高兴与这JSON string:

{'page':'1','total':1,'records':'4','rows':[{'id':1,'title':'Story Manager','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':2,'title':'Analysis','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':3,'title':'Narrative','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':4,'title':'Graphic','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'}]}

Jayrock(.净书RPC框架)供应id string为:

{id:'-1','result':{'page':'1','total':1,'records':'4','rows':[{'id':1,'title':'Story Manager','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':2,'title':'Analysis','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':3,'title':'Narrative','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':4,'title':'Graphic','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'}]}}

I.e。它增加了一个"{id:'-1','result':{ /* ... snip ... */ }}"包装的工作的手机中。

反正是有点jsonReader财产的jqGrid到正确的地方开始分析id的结果?我有一件了不起的时间与所有这一切都:)

---编辑

我想发表一个简单的例子...感谢您的回答,Stuntz.所有这一切需要对下面的例子。净, Jayrock, jQuery, , jqGrid.这适用上述手机中。我忘了是否需要设置内容类型。

var lastsel; // last row selected (for editing)      

jQuery(document).ready(function(){ 
    jQuery("#mygrid").jqGrid({ 
        contentType: "text/plain; charset=utf-8",
        datatype: function(postdata)
        {
            $.ajax({
                url: 'http://localhost:2064/StoryManager/StoryManager.ashx/getPageItemRoles?id=3',
                data: postdata,
                complete: function(response, status)
                {
                    if(status=='success')
                    {
                        var mygrid = jQuery("#mygrid")[0];
                        var o = eval("(" + response.responseText + ")"); // TODO don't use eval.  it's insecure, but older browsers support it...
                        mygrid.addJSONData(o.result);
                    }
                }
            })
        },                
        colNames:['ID', 'Title', 'Assigned To', 'Assigned', 'Due', 'Completed'],
        colModel:[
            {name:'id', label:'ID', jsonmap:'id', hidden: true,  editrules: { edithidden: true }},
            {name:'title', jsonmap:'title', editable: true},
            {name:'assignedto', label:'Assigned To', jsonmap:'assignedto', editable: true},
            {name:'assigned', jsonmap:'assigned', editable: true},
            {name:'due', jsonmap:'due', editable: true},
            {name:'completed', jsonmap:'completed', editable: true}
        ],
        jsonReader: {
            repeatitems: false
        }
    });  
});
有帮助吗?

解决方案

没有,你无法通过jsonReader做到这一点。在内部,格栅的作用:

        ts.p.page = data[ts.p.jsonReader.page];

...这将不是一个点子属性工作。

相反,你需要通过设置数据类型为手动功能来获取网格数据。然后,您可以获取与$阿贾克斯的数据,并调用grid.addJsonData当它回来,就像格呢,只是不用经过整个反应,你会通过响应的子属性。

其他提示

这帖子和链接已经真的很有帮助。 我没有关于如何工作的一个清晰的认识,但是我以为我只是张贴此帮助别人减轻他们的痛苦:)

这是从getRecords返回JSON:

  

{ “ID”: - 1, “结果”:{ “页”: “1”, “总”: “1”, “记录”: “2”, “行”:[{ “ID”: “13”, “invdate”: “2007-10-06”, “姓名”:“客户端   3" , “量”: “1000.00”, “税”: “0.00”, “全”: “1000.00”, “注意”: “”},{ “ID”: “12”, “invdate”:“2007年-10-06" , “名”:“客户端   2" , “量”: “700.00”, “税”: “140.00”, “总”: “840.00”, “注意”:“无   税“}]}}

和是这样的工作代码:

jQuery(document).ready(function(){ 
    jQuery("#list4").jqGrid({ 
        contentType: "text/plain; charset=utf-8",
        datatype: function(postdata)
        {
            $.ajax({
                url: 'http://localhost/Booga/Baba.ashx/getRecords',
                data: "{}", // For empty input data use "{}",
                dataType: "json",
                type: "GET",
                contentType: "application/json; charset=utf-8",
                complete: function(response, status)
                {
                    if(status=='success')
                    {
                        var mygrid = jQuery("#list4")[0];
                        var o = eval("(" + response.responseText + ")");// TODO don't use eval.  it's insecure, but older browsers support it...
                        mygrid.addJSONData(o.result);
                    }
                }
            })
        },                
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
    colModel:[
        {name:'id',index:'id', width:55},
        {name:'invdate',index:'invdate', width:90, jsonmap:"invdate"},
        {name:'name',index:'name asc, invdate', width:100},
        {name:'amount',index:'amount', width:80, align:"right"},
        {name:'tax',index:'tax', width:80, align:"right"},      
        {name:'total',index:'total', width:80,align:"right"},       
        {name:'note',index:'note', width:150, sortable:false}       
    ],
        jsonReader: {
            repeatitems: false
        }
    });  
});

顺便说一句,有没有人知道为什么使用eval是不安全的?只看我的代码的注释。我抓住该部分从forum.asp链路。

  

即。它增加了一个 “{ID: ' - 1', '结果':{/ * ...略... * /}}” 围绕工作JSON包装

这是JayRock处理SMD响应的方式......“标识”的副作用是一个“响应标识符”并且是用于异步通信的辅助。

所以,如果你火了一堆异步请求的(不周围等待响应),你可以指定“请求ID”和JayRock会遵守这个......这样你就可以排队与回应请求。

我希望这是一个毫无意义。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top