سؤال

وكنت أتساءل إذا كان شخص ما قد يكون فكرة عن هذا. jqGrid سعيدة جدا مع هذه السلسلة JSON:

{'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 (.NET JSON-RPC الإطار) تزود سلسلة JSON النحو التالي:

{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'}]}}

وأي بمعنى. فإنه يضيف "{id:'-1','result':{ /* ... snip ... */ }}" التفاف حول JSON العمل.

وهناك على أية حال أن نشير الممتلكات jsonReader من jqGrid إلى المكان الصحيح لبدء تحليل نتيجة JSON؟ أواجه من هيك وقت واحد مع كل هذا:)

و--- --- تحرير

وأنا أرغب في وظيفة مثال سريع ... شكرا لإجابتك، Stuntz. كل ما هو مطلوب لالمثال التالي هو .NET، Jayrock و <لأ href = "HTTP: // jquery.com/ "يختلط =" نوفولو noreferrer "> مسج ، و jqGrid . هذا يعمل مع JSON أعلاه. أنسى ما إذا كنت تحتاج إلى تعيين نوع المحتوى.

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];

و... والتي لن تعمل لالمنقطة الفرعية الممتلكات.

وبدلا من ذلك ستحتاج إلى إحضار بيانات الشبكة يدويا عن طريق تحديد نوع البيانات إلى وظيفة. يمكنك بعد ذلك جلب البيانات مع .ajax $، وندعو grid.addJsonData عندما يعود، تماما مثل الشبكة لا، إلا أنه بدلا من تمرير استجابة كاملة عليك تمرير الملكية دون استجابة.

نصائح أخرى

وكانت هذه آخر وصلات مفيدة حقا. أنا لم يكن لديك فهم واضح حول كيفية عمل ذلك حتى الان ولكن اعتقد أنني مجرد وظيفة هذا لمساعدة شخص ما يخفف آلامهم:)

وهذا هو JSON العودة من getRecords:

<اقتباس فقرة>   

{ "المعرف": - 1 "نتيجة": { "الصفحة": "1"، "مجموع": "1"، "سجلات": "2"، "الصفوف": [{ "المعرف": "13"، "invdate": "2007/10/06"، "اسم": "العميل   3 "،" كمية ":" 1000.00 "،" ضريبة ":" 0.00 "،" المجموع ":" 1000.00 "،" ملاحظة ":" "}، {" المعرف ":" 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
        }
    });  
});

وبالمناسبة، لا أحد يعرف لماذا تستخدم وحدة التقييم غير آمنة؟ نظرة على تعليق على قانون بلدي. أمسكت هذا الجزء من الرابط forum.asp.

<اقتباس فقرة>   

وأي بمعنى. فإنه يضيف "{معرف: '- 1'، 'نتيجة': {/ * ... قص ... * /}}" التفاف حول JSON العمل

.

وهذا هو أحد الآثار الجانبية للطريقة JayRock يعالج الردود مصلحة الارصاد الجوية ... في "الهوية" هو "معرف استجابة" و هو المساعدات للاتصال غير متزامن.

وهكذا، إذا كنت اطلاق النار من مجموعة من طلبات المتزامن (وليس الانتظار لنحو الاستجابة)، يمكنك تحديد "معرف الطلب"، وسوف JayRock تكريم ذلك ... حتى تتمكن من يصطف مع الردود الطلبات.

وآمل أن يجعل معنى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top