开始使用extJS

时间:2009-07-03 01:12:41

标签: javascript extjs

我不知道我做错了什么。

我正在尝试从服务器的JSON字符串填充表单,但它不起作用。我什么都没得到。我检查对象,它是未定义的。我已经在墙上撞了3天了。我需要一个有效的简单示例,我将从那里构建。

以下是我一直尝试使用的简单示例:

var messages = new Ext.data.JsonStore({
    url: '/user/' + user_id,
    method: 'GET',
    root: 'user',
    fields: [
             {name: 'user_id'},
             {name: 'first_name'}
     ],
     listeners: {
        load: messagesLoaded
    }
});

messages.load();

function messagesLoaded(messages) {
    console.log(messages);
}

这是我的JSON字符串:

{"success":"true","user":{"user_id":"2","first_name":"Test","last_name":"Test","email":null,"password":null,"city_id":"6379","birth_date":"2009-06-09","gender":"F","created_on":"2009-06-01 17:21:07","updated_on":"2009-06-14 17:20:14","active":"Y","cuisine_id":null}}

我真的看不出我做错了什么,但我的JSON字符串没有加载。谢谢!

2 个答案:

答案 0 :(得分:4)

好的,所以你几乎那里,但有一个问题。 root (本例中为“user”)作为数组。即使它是一个只有一个对象的数组。 Ext.data.JsonReader Ext.data.JsonStore 的默认阅读器)只接受一系列结果。

所以你的javascript看起来很好,但是服务器返回的JSON对象需要看起来更像这样。

{
    "success":"true",
    "user": [{
        "user_id":"2",
        "first_name":"Test",
        "last_name":"Test",
        "email":null,
        "password":null,
        "city_id":"6379",
        "birth_date":"2009-06-09",
        "gender":"F",
        "created_on":"2009-06-01 17:21:07",
        "updated_on":"2009-06-14 17:20:14",
        "active":"Y",
        "cuisine_id":null
    }]
}

答案 1 :(得分:2)

还有一件事,consoloe.logging你的商店对象会在Firebug中产生类似[Object]的东西......不太有用。您应该使用console.dir,或者记录您的实际数据。

关于加载表单的一条评论,一旦你过去加载你的JSON(即使这个例子没有显示)。在尝试使用数据加载表单之前,请确保您的表单已实际呈现,例如如果尝试使用form.loadRecord之类的东西。否则你最终会得到一个空表格而且没有错误。