我不知道我做错了什么。
我正在尝试从服务器的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字符串没有加载。谢谢!
答案 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之类的东西。否则你最终会得到一个空表格而且没有错误。