2011-10-16 12 views
5

मैं के रूप में मेरी दुकान कॉन्फ़िगर कर दिया है:ExtJS ग्रिड त्रुटि, JSON डेटा प्रदर्शित किया जा रहा नहीं है

var store = new Ext.data.JsonStore({ 
url: 'gridData.php', 
root: 'movies', 
fields: ['film_id', 'title', 'release_year', 'rating'] 
}); 

और फिर मेरी ग्रिड के रूप में परिभाषित:

var grid = new Ext.grid.GridPanel({ 
    title:'Movies', 
    store: store, 
    columns: [ 
       { header: "ID", width: 30, dataIndex: 'film_id',sortable: true, hidden:true }, 
       { id: 'title-col', header: "Title", width: 180,dataIndex: 'title', sortable: true }, 
       { header: "Rating", width: 75, dataIndex: 'rating',sortable: true }, 
       { header: "Year", width: 75, dataIndex: 'release_year',sortable: true, align: 'center' } 
     ], 
    autoExpandColumn: 'title-col', 
    renderTo: Ext.getBody(), 
    width: 600, 
    height: 300, 
    loadMask: true 
}); 

तो मैं दुकान लोड:

store.load(); 

मैं यह सब Ext.onReady विधि में कर रहा हूं।

{ "count":2, "movies":[{ "film_id":"1", "title":"ACADEMY DINOSAUR", "description":"An Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies", "release_year":"2006", "rating":"PG", "special_features":"Deleted Scenes,Behind the Scenes" }, { "film_id":"2", "title":"ACE GOLDFINGER", "description":"An Astounding Epistle of a Database Administrator And an Explorer who must Find a Car in Ancient China", "release_year":"2006", "rating":"G", "special_features":"Trailers,Deleted Scenes" } ] } 

जब पृष्ठ लोड होने पर ग्रिड लोड हो रहा है मुखौटा दिखा रहता है और डेटा कभी नहीं दिखाया जाता है: डेटा है कि मैं प्रदर्शित करना चाहते हैं एक php फ़ाइल निम्न रूप में है जहाँ से प्राप्त किए गए है। इसके अलावा, मुझे त्रुटि मिलती है a is undefined. मुझे क्या याद आ रही है?

संपादित

मैंने पाया कुछ पथ मुद्दा जब स्टोर करने के लिए यूआरएल बताए वहाँ लेकिन अभी भी हल नहीं किया जा सकता है। मेरी "gridData.php" फ़ाइल, जेएस फ़ाइल और HTML फ़ाइल जहां ग्रिड प्रदर्शित किया जा रहा है, वही फ़ोल्डर में हैं और मैं "localhost/myapp" पर हूं। कृपया सहायता कीजिए!

+0

FYI करें काम करना चाहिए, मैं अपने कोड की नकल की और ExtJS 3.3.1 पर भाग गया, और उम्मीद के रूप में यह चलता है। कोई त्रुटि नहीं मिली एक बात जो मैं सुझाऊंगा वह आपके PHP कोड की जांच करेगी। सुनिश्चित करें कि लौटा JSON स्वच्छ और मान्य है। जो कुछ मैं देखता हूं उससे जेएसओएन कुछ तरीकों से कड़ी मेहनत की जाती है। कुछ spacings 'json_encode' से प्राकृतिक प्रतीत नहीं होता है। –

उत्तर

0

मान लिया जाये कि आप चला रहे हैं ExtJS 4 इस तरह अपनी दुकान को परिभाषित:

var store = new Ext.data.JsonStore({ 
    proxy: { 
     url: 'gridData.php', 
     type: 'ajax', 
     reader: { 
      type: 'json', 
      root: 'movies' 
     } 
    }, 
    fields: ['film_id', 'title', 'release_year', 'rating'] 
}); 
+0

इसे आजमाएं: http://asken.no-ip.com/apps /testgrid.html – Asken

+0

मैंने आपके कोड का परीक्षण नहीं किया, लेकिन, मेरे कोड में, पाठक गायब था। इसके अलावा, मैं ExtJs 4 का उपयोग कर रहा था, लेकिन मेरा उदाहरण कोड पुराने संस्करण के लिए था। तो अपने उत्तर को मान्य के रूप में चिह्नित करें! – wasimbhalli

-1

इस स्टोर के साथ प्रयास करें:

var store = new Ext.data.JsonStore({ 
    url: 'gridData.php', 
    root: 'movies', 
    fields: [ 
       { 
        name: 'id' 
       }, 
       { 
        name: 'title' 
       }, 
       { 
        name: 'release_year' 
       }, 
       { 
        name: 'rating' 
       }      
    ] 
}); 
+0

हाँ, मैंने कोशिश की लेकिन यह काम नहीं करता है :( – wasimbhalli

+0

इसे इस तरह घोषित करना ओपी के बराबर है। -1। –

2

आपकी दुकान में ही वाणी इन क्षेत्रों के लिए:

  • आईडी
  • शीर्षक
  • RELEASE_YEAR
  • रेटिंग

हालांकि, अपने JSON डेटा का पंक्तियों इन क्षेत्रों में शामिल हैं:

  • film_id
  • शीर्षक
  • वर्णन
  • RELEASE_YEAR
  • रेटिंग
  • special_features

आपका त्रुटि होने की संभावना के कारण होता है ग्रिड द्वारा एक की तलाश में एन 'आईडी' फ़ील्ड जो डेटा में मौजूद नहीं है।

एक विकल्प के लिए अपने स्टोर के क्षेत्र परिभाषा बदलने के लिए है:

['film_id', 'title', 'release_year', 'rating'] 

तुम भी स्तंभ परिभाषा करने के लिए एक इसी परिवर्तन बनाने के लिए की आवश्यकता होगी:

{header: "ID", width: 30, dataIndex: 'film_id', sortable: true, hidden: true} 

एक अन्य विकल्प एक मानचित्रण जोड़ने के लिए है स्टोर में क्षेत्र की परिभाषा के लिए:

[{name: 'id', mapping: 'film_id'}, 'title', 'release_year', 'rating'] 

इसके अलावा, मेरा सुझाव है कि आपके विकास के दौरान 'ext-all.js' के बजाय 'ext-all-debug.js' का उपयोग करके अपने पृष्ठ में ExtJS शामिल करें। डीबग बिल्ड के खिलाफ चलते समय कंसोल में त्रुटि संदेश और बैकट्रैक आमतौर पर अधिक वर्णनात्मक होंगे।

1

यह सरल होना चाहिए। idProperty का डिफ़ॉल्ट मान id है और आपने कोई दूसरा सेट नहीं किया है। तो स्टोर id फ़ील्ड की तलाश में है जो मौजूद नहीं है।

कि

var store = new Ext.data.JsonStore({ 
url: 'gridData.php', 
root: 'movies', 
idProperty: 'film_id', 
fields: ['film_id', 'title', 'release_year', 'rating'] 
}); 
संबंधित मुद्दे