2011-10-28 107 views
1

我試圖從imdb加載數據,但我在表格(GridPanel)中沒有結果。 這是我的源代碼:ExtJs加載數據

... 
<body> 
<script type="text/javascript"> 
Ext.onReady(function(){ 

var store1 = new Ext.data.JsonStore({ 
    root: 'root', 
    idProperty: 'ID', 
    remoteSort: true, 
    fields: [ 
     'Title' 
    ], 
    // load using script tags for cross domain, if the data in on the same domain as 
    // this page, an HttpProxy would be better 
    proxy: new Ext.data.ScriptTagProxy({ 
     url: 'http://www.imdbapi.com/?t=True%20Grit' 
    }) 
}); 
// building grid panel 
}); 
</script> 
<div id="topic-grid"></div> 
... 

也許我應該改變JsonStore「根」參數?


UPDATE

我試圖用HTTPPROXY,但仍然沒有結果。我把我的全身內容也許會更有幫助。

<script type="text/javascript"> 
Ext.onReady(function(){ 

var store1 = new Ext.data.JsonStore({ 

    reader: new Ext.data.JsonReader({ 
     fields: ['Title'], 
     root: 'rows' 
     }), 

    // load using script tags for cross domain, if the data in on the same domain as 
    // this page, an HttpProxy would be better 
    proxy: new Ext.data.HttpProxy({ 
     url: 'http://www.imdbapi.com/?t=True%20Grit' 
    }), 
    autoLoad: true 
    }); 

var grid1 = new Ext.grid.GridPanel({ 
    width:700, 
    height:500, 
    title:'ExtJS.com - Browse Forums', 
    store: store1, 
    trackMouseOver:false, 
    disableSelection:true, 
    loadMask: true, 

    // grid columns 
    columns:[{ 
     id: 'Title', 
     header: "Topic", 
     dataIndex: 'Title', 
     width: 420, 
     sortable: true 
    }] 
}); 


// render it 
grid1.render('topic-grid'); 

// trigger the data store load 
store1.load({params:{start:0, limit:25}}); 
}); 
</script> 
<div id="topic-grid"></div> 

回答

3

使用ScriptTagProxy時,無法直接從響應中獲取JSON。你只能得到可執行的JavaScript,不幸的是,imdbapi網站不會返回可執行的JavaScript。另外,您不能使用HttpProxy執行跨站點腳本(XSS)。您只能連接到自己本地域上的資源(例如文件)。你

一種可能性:

  1. 建立在自己的域名服務器端的文件,你的代理將連接到。
  2. 而不是ScriptTagProxy,使用與您的服務器端文件聯繫的HttpProxy。

    proxy: new Ext.data.HttpProxy({ 
        url: '/path/to/my/server/file?t=True%20Grit' // the leading slash in 
                    // this url will begin from 
                    // your web server's root 
                    // directory for your 
                    // web-accessible files 
    }) 
    
  3. 讓你的服務器端文件將代表客戶端和輸出IMDB API的結果作爲一個JSON返回給客戶端的IMDB API調用。

    myServerSideFile 
    ================ 
    
    // harvest GET parameters, e.g., in your case, the query param 't' with value 
    // True%20Grit 
    
    // use the GET parameters to form a url with the GET params on the end, e.g., 
    // in your case, http://www.imdbapi.com/?t=True%20Grit 
    
    // call the imdb api using this url 
    
    // return the imdb api results as a JSON 
    

的更多細節和做各種服務器端技術中的上述建議的例子見this

+0

-1只是提到一個PHP示例。有更多的服務器端語言可用,並且這個問題沒有用PHP標記。不應該提及具體的語言。如果您解決這個問題,我會將其更改爲+1。 – sra

+0

@sra我已編輯刪除php引用 – Ryan

+0

@Ryan,感謝您的信息,但我仍然得到空表。我粘貼了我的更新代碼 – bontade