Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON文件加载到JSON存储区不起作用_Json_Extjs_Jsonstore - Fatal编程技术网

将JSON文件加载到JSON存储区不起作用

将JSON文件加载到JSON存储区不起作用,json,extjs,jsonstore,Json,Extjs,Jsonstore,下面您可以看到我的登录功能,它实际上正在工作。但它不会将服务器提供的json文件加载到json存储中 “console.log(“加载前存储”,UserStore)”和“console.log(“加载后存储”,UserStore)”显示的消息完全相同,所以我猜“UserStore.load(jsonRes)”根本不起作用。我还尝试了“UserStore.loadData(jsonRes)”和“UserStore.loadRawData(jsonRes)”这两种方法,它们都不起作用(错误:unca

下面您可以看到我的登录功能,它实际上正在工作。但它不会将服务器提供的json文件加载到json存储中

“console.log(“加载前存储”,UserStore)”和“console.log(“加载后存储”,UserStore)”显示的消息完全相同,所以我猜“UserStore.load(jsonRes)”根本不起作用。我还尝试了“UserStore.loadData(jsonRes)”和“UserStore.loadRawData(jsonRes)”这两种方法,它们都不起作用(错误:uncaughttypeerror:Object[Object Object]没有方法“loadDataRaw”)。 你能解释一下如何解决这个问题吗?非常感谢

Ext.util.JSONP.request({

url: 'http://127.0.0.1:4712/talentcommunity/getuserinfo',

headers: { 
    'content-type': 'application/x-www-form-urlencoded ; charset=utf-8'
},

method: 'post',

params: {
    user:data1,
    pw:data2
},

callbackName: 'myCallback',

success: function (response) {

    var loginResponse = response;
    if (loginResponse.msg == "OK") {
        var UserStore = Ext.create('Ext.data.Store', {
            model: 'Sabine.model.user',
            data: response.user
        });
        me.signInSuccess();
    }
    else{
        loginView.showSignInFailedMessage('token null.');   
    } 

},
提供的Json文件如下所示:

{msg: "OK", user: Object}
“用户”本身看起来是这样的:
{“令牌”:“ee80d56688fb7d3a8bcf5939fc9cbcf1”,“标题”:“登录”:“bmuster”,“facebookId”:“firstName”:“Bertha”,“lastName”:“Muster”,“国籍”:“GM”,“生日”:“12/09/82”,“手机”:“+4989111111”,“街道”:“Musterstra\ufffde11”,“城市”:“Musterstadt”,“zipCode”6666666”,“willingToTravel”:“,”图片“:”电子邮件“:”bmuster@example.com“,“publicList”:[]}

我的店铺定义如下:

Ext.define('Sabine.store.MyJsonPStore', {
extend: 'Ext.data.Store',

requires: [
    'Sabine.model.user'
],

config: {
    autoLoad: true,
    autoSync: true,
    clearOnPageLoad: false,
    model: 'Sabine.model.user',
    storeId: 'myStore'
}
});
相应的模型:

Ext.define('Sabine.model.user', {
extend: 'Ext.data.Model',

config: {
    fields: [
        {
            name: 'token',
            type: 'string'
        },
        {
            name: 'title'
        },
        {
            name: 'login'
        },
        {
            name: 'facebookId'
        },
        {
            name: 'firstName',
            type: 'string'
        },
        {
            name: 'lastName',
            type: 'string'
        },
        {
            name: 'nationality',
            type: 'string'
        },
        {
            name: 'birthDay',
            type: 'string'
        },
        {
            name: 'phone'
        },
        {
            name: 'mobile'
        },
        {
            name: 'street'
        },
        {
            name: 'city',
            type: 'string'
        },
        {
            name: 'zipCode',
            type: 'int'
        },
        {
            name: 'willingToTravel'
        },
        {
            name: 'pictureUrl'
        },
        {
            name: 'eMail'
        },
        {
            name: 'publicList'
        }
    ]
}
});
视图示例:

Ext.define('Sabine.view.MeinAccount', {
    extend: 'Ext.Container',
    alias: 'widget.accview',
    config: {
        maxHeight: 480,
        maxWidth: 320,
    items: [{
        xtype: 'tabpanel',
        height: 430,
        maxHeight: 480,
        items: [
            {
            xtype: 'list',
            title: 'Allgemein',
            iconCls: 'home',
            modal: false,
            deferEmptyText: false,
            itemTpl: [
                '<table border = "0">',
                '<tr>',
                ' <td>Firstname</td>',
                ' <td>{firstName}</td>',
                ' <td>Last<name/td>',
                ' <td>{lastName}</td>',
                '</tr>',
                '<tr>',
                ' <td>Nationality</td>',
                ' <td>{nationality}</td>',
                '</tr>',
                '</table>'
            ],
            store: 'Sabine.store.UserStore'
     },
Ext.define('Sabine.view.MeinAccount'{
扩展:“Ext.Container”,
别名:“widget.accview”,
配置:{
最大高度:480,
最大宽度:320,
项目:[{
xtype:'tabpanel',
身高:430,
最大高度:480,
项目:[
{
xtype:'列表',
标题:“Allgemein”,
iconCls:“家”,
莫代尔:错,
deferEmptyText:false,
第三方物流:[
'',
'',
“名字”,
“{firstName}”,
"最后",,
“{lastName}”,
'',
'',
"国籍",,
“{国籍}”,
'',
''
],
store:'Sabine.store.UserStore'
},
您应该试试

success: function (response) {

    var loginResponse = response.responseText;
    ....
}

关于您的问题的几点想法:

  • 您有一个未在模型中声明的字段
    publicList
  • store.load
    不接受模型的实例,相反,它使用服务器的数据加载本地存储
  • store.loadData
    store.loadRawData
    是您的选择,但是您提到的消息(未捕获类型错误:Object[Object Object]没有方法..)表示您尚未成功检索存储实例。为此,您应首先实例化存储,而不仅仅是声明它;为此,请使用
    Ext.create
    方法
  • 如果您的
    loginResponse.user
    已为JSON格式,则不应使用
    Ext.JSON.encode

请发布您商店的定义。嘿,我编辑了上面的问题。现在您可以看到商店的定义。我忘了问,请发布
Sabine.model.user的定义,以及您正在使用的Ext JS版本。谢谢。我的问题现在也包含了模型,…我正在使用Secha Touch 2.0.1.1,这些信息有用吗你?看看你在做什么。响应已经是一个json对象。然后你将它转换成字符串,然后传递到
load
。其次,你的响应中
user
在哪里?你发布的内容中没有一个键与之匹配。嘿,谢谢你的回答。当我尝试“loginResponse=response.responseText;“它说loginResponse是未定义的。如果您在json响应中提供标志
success:true
,请尝试
console.log
您的响应变量.console.log(response)=>Object{msg:“OK”,user:Object}“user”本身看起来像这样:{“token”:“ee80d56688fb7d3a8bcf5939fc9cbcf1”,“city”:“NewYork”,“zipCode”:”"66666",...}谢谢你的注释。我想,我现在已经通过在成功函数中添加一些代码启动了存储。我编辑了我的问题,以便你可以看到新的代码。它还将数据加载到该存储。在下一步中,我想将数据放在应用程序的特定视图中,你能给我一些提示如何处理吗?我不知道如何处理从不同的视图访问存储。我还在上面的问题中发布了一个视图示例。@Daniel90很乐意提供帮助。您应该在视图中使用同一个存储,您引用了
Sabine.store.UserStore
,并且您的存储id是
Sabine.store.MyJsonPStore
。此外,不要使用HTML标记来呈现网格,改为使用Ext.grid.Panel并在items部分将模型中的字段枚举为属性
dataIndex
。有关进一步阅读的信息,请参阅,也有一些很好的教程。