【问题标题】:ExtJS store with ajax proxy doesn't load data带有 ajax 代理的 ExtJS 存储不加载数据
【发布时间】:2013-02-22 19:58:49
【问题描述】:

我是 ExtJS 的初学者,正在学习 sencha 的教程,只是不想工作(应用教程)。

我有一个简单的网格存储,当存储使用 AJAX 代理读取 json 文件时,数据不显示,并且根据 firebug 中的 net 选项卡没有加载任何内容,因为它是空的.并且不会抛出任何错误。但是如果我为我的 json 文件添加了一个错误的 url,那么它会抛出一个无法找到的错误。

我的商店是这样的:

Ext.define('AM.store.Users', {
    extend: 'Ext.data.Store',
    model: 'AM.model.User',
    autoLoad: true,

    proxy: {
        type: 'ajax',
        url: 'data/users.json',
        reader: {
            type: 'json',
            root: 'users',
            successProperty: 'success'
        }
    }
});

我的 json 文件是这样的:

{
    "success": true,
    "users": [
        {"name": "Ed",    "email": "ed@sencha.com"},
        {"name": "Tommy", "email": "tommy@sencha.com"}
    ]
}

型号:

Ext.define('AM.model.User', {
    extend: 'Ext.data.Model',
    fields: ['name', 'email']
});

这些与教程的可下载源文件中的完全相同,但也不起作用。如果数据是在商店内定义的,一切都很好。请帮忙,这里完全被屏蔽了。

谢谢!

【问题讨论】:

  • 模型长什么样?
  • 您可能需要将示例托管在服务器上才能使 Ajax 正常工作。
  • 使用ext-all-dev.jsext-dev.js 这样你就有更多的日志记录。打开你的控制台。它说什么?你也应该需要你的模型;)只需添加一个额外的参数requires: ['AM.model.User']。像@Eric sais 一样,您是从网络服务器运行的吗?
  • 用模型编辑。关于服务器点。在我将它上传到服务器后,它运行良好。不知道需要。但是出于开发目的,如果有一个解决方案可以将数据从我计算机上的外部文件加载到存储中,那就太好了。最简单的方法是什么?有代理设置,可以吗?第一次搜索找不到任何好的东西。数据可以是xml、json、数组,什么都可以,没关系。

标签: extjs extjs4 extjs4.1


【解决方案1】:

您需要像 Eric 所说的那样在服务器设置中进行 ajax 调用。要回答有关加载外部数据的问题,您不能这样做,因为它首先不起作用的原因是出于安全原因,如果可以规避,那就没有意义了。我认为您可以从外部文件加载数据的唯一方法是将 JSON 数据保存为外部 .js 文件中的对象,然后使用商店的 data 属性将数据设置为外部文件中的该对象.

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多