ExtJs加载数据

发布于 2024-12-12 05:51:15 字数 1751 浏览 0 评论 0原文

我正在尝试从 imdb 加载数据,但表(GridPanel)中没有结果。 这是我的源代码:

...
<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 中的“root”参数?


更新

我尝试使用 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>

I'm trying to load data from imdb, but i have no results in table (GridPanel).
It's my source code:

...
<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>
...

Maybe should I change 'root' parameter in JsonStore?


UPDATE

I tried to use HttpProxy, but still no results. I put my all body contents maybe it will be more helpful.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在梵高的星空下 2024-12-19 05:51:15

使用 ScriptTagProxy 时,您无法直接从响应中获取 JSON。您只能获取可执行的 javascript,不幸的是,imdbapi 站点不返回可执行的 javascript。此外,您不能使用 HttpProxy 执行跨站点脚本 (XSS)。您只能连接到您自己的本地域上的资源(例如文件)。

您的一种可能性是:

  1. 在您自己的域上设置一个服务器端文件,您的代理将连接到该文件。
  2. 使用与服务器端文件联系的 HttpProxy,而不是 ScriptTagProxy。

    代理:new Ext.data.HttpProxy({
        url: '/path/to/my/server/file?t=True%20Grit' // 中的前导斜杠 
                                                      // 这个 url 将从
                                                      // 你的网络服务器的根目录
                                                      // 你的目录
                                                      // 网络可访问的文件
    })
    
  3. 让服务器端文件代表客户端进行 imdb api 调用,并将 imdb api 的结果以 JSON 形式输出回客户端。

    myServerSideFile
    ===============
    
    // 收获 GET 参数,例如,在您的情况下,查询参数“t”的值
    // 真实%20Grit
    
    // 使用 GET 参数形成一个 url,并将 GET 参数放在末尾,例如,
    // 在你的情况下,http://www.imdbapi.com/?t=True%20Grit
    
    // 使用此 url 调用 imdb api
    
    // 以 JSON 形式返回 imdb api 结果
    

有关更多详细信息,请参阅在各种服务器端技术中执行上述建议的示例。

You can't get a JSON directly from the response when using a ScriptTagProxy. You can only get executable javascript, and unfortunately, the imdbapi site doesn't return executable javascript. Also, you can't use HttpProxy to do cross-site scripting (XSS). You can only make connections to resources (e.g., files) on your own local domain.

One possibility for you:

  1. Set up a server-side file on your own domain that your proxy will connect to.
  2. Instead of a ScriptTagProxy, use an HttpProxy that contacts your server-side file.

    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. Have your server-side file make the imdb api call on behalf of the client and output the results of the imdb api as a JSON back to the client.

    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
    

See this for more details and examples of doing the above suggestion in various server-side technologies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文