【问题标题】:EXT js model.load returning undefined recordEXT js model.load 返回未定义的记录
【发布时间】:2012-12-27 15:19:22
【问题描述】:

我正在做一个类似这样的 Model.load:

//get a reference to the User model class
var User = Ext.ModelManager.getModel('User');

//Uses the configured RestProxy to make a GET request to /users/123
User.load(123, {
    success: function(user) {
        console.log(user.getId()); //logs 123
    }

});

在控制台中,我可以看到正在加载正确的 User 对象。正在调用正确的服务器端 Web 服务。它正在进入成功功能。但是 user 是未定义的。有谁知道为什么会这样?

【问题讨论】:

  • 好吧,如果不看您的 JSON 响应就很难说,但我认为问题可能出在 JSON 的格式上(可能不是根对象,可能是数组?)
  • @VoidMain Web 服务正在返回一个用户对象,控制台显示一个 jsonarray {"id":22,"firstname":"ttes","lastname":"fff","phonenumber" :"444-444-4444","email":"fff@gmial.com","bio":"asdfsdfasdfdfs","travelradius":6,"accepted":true,"approver":null,"approvercmets" :null}
  • 你说的是显示一个 jsonarray 但你的 json 看起来像一个对象,如果它是一个数组响应,那么你需要在你的服务器中解开它,以便在你按 id 加载时只得到一个结果(比如在您的示例中)load 方法采用单个结果对象,而不是数组,这可能是您的情况吗?在任何情况下,查看该模型的代理和阅读器配置都会很有用。

标签: extjs extjs4.1


【解决方案1】:

根据您的描述,控制台显示的是一个用户对象(它只是 JSON 响应中的一组键/值对)。
您说用户未定义,但看起来您的意思是 user.getId() 未定义。
来自 Web 服务器的 JSON 响应没有任何方法(如 getId)——只有键/值对。

编辑:您的代码看起来很像here 给出的示例(大约在中间)。
如果你修改你的日志记录:

console.log("User: " + user.get('firstname'));

它是否像您在 JSON 对象中显示的那样返回 ttes

【讨论】:

  • 没有。用户未定义。我可以取消getId。实际用户未定义。这就是我问这个问题的原因
  • 控制台如何显示json数组:{"id": 22, "firstname"...如果未定义?
  • 这就是我问这个问题的原因
  • 你没有任何意义。你说:“控制台显示一个 jsonarray {"id":22, "firstname":... 这是它为user 显示的内容吗?如果它为用户显示这个,那么显然user 不是未定义的。如果你说它显示了其他东西,那还有什么?这个 jsonarray 的值是什么?你是如何在控制台中记录它的?
【解决方案2】:

这是在黑暗中拍摄的,可能不是正确的答案。

我相信您没有返回正确的 JSON。首先,查看模型上的代理定义以及您是否在其阅读器中设置了任何root 属性会很有用。

如果您尚未定义任何阅读器根目录,请尝试使用 [] 扭曲您的 JSON 响应。

如果其中任何一个有效,我会解释原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2018-09-28
    相关资源
    最近更新 更多