extjs使用jsonp,从远程url访问数据

extjs使用jsonp,从远程url访问数据,extjs,Extjs,使用extjs,我从一个系统运行服务器,在另一个系统中提供url,在extjs版本:4.02中使用JSONP,当我签入响应时,我获取json格式的数据,当我尝试在控制台中打印或存储时,我得不到..这是我的extjs代码 <script type="text/javascript"> Ext.Ajax.cors = true; Ext.Ajax.useDefaultXhrHeader = false; Ext.d

使用extjs,我从一个系统运行服务器,在另一个系统中提供url,在extjs版本:4.02中使用JSONP,当我签入响应时,我获取json格式的数据,当我尝试在控制台中打印或存储时,我得不到..这是我的extjs代码

<script type="text/javascript">

            Ext.Ajax.cors = true;
            Ext.Ajax.useDefaultXhrHeader = false;   

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

    var myStore = Ext.create('Ext.data.Store', {
                    model: 'User',                     
                    autoLoad:true,
                    proxy: {
                        type: 'jsonp',

                      // url : 'data/tagfamily.json',
                        url:'http://192.168.7.70:8080/palamanagement/user/getAllRecords',

                                            },
                    listeners:{
                        'load':function( store, records, successful, eOpts ){                                             
                            alert(records);
                            console.log(records);

                        }
                    }
                });

Ext.Ajax.cors=true;
Ext.Ajax.useDefaultXhrHeader=false;
Ext.define('用户'{
扩展:“Ext.data.Model”,
字段:['empid','name','email']
});
var myStore=Ext.create('Ext.data.Store'{
模型:“用户”,
自动加载:对,
代理:{
键入:“jsonp”,
//url:'data/tagfamily.json',
网址:'http://192.168.7.70:8080/palamanagement/user/getAllRecords',
},
听众:{
“加载”:函数(存储、记录、成功、eOpts){
警报(记录);
控制台日志(记录);
}
}
});

您必须返回如下内容:

someCallback({
    users: [
        {
            id: 1,
            name: "Ed Spencer",
            email: "ed@sencha.com"
        }
    ]
});
因此,您已经拥有了所需的JSON;您只需要服务器响应将JSON包装到回调中,以便JSONP代理可以执行并用数据加载您的存储

因此,在处理JSONP请求时,服务器脚本需要识别作为请求一部分发送的“回调”参数。然后需要使用此参数的值来包装JSON响应


一定要阅读我和Oguz发布的文档:它们很好地概括了需求。但是如果您不使用回调进行响应,您将永远无法使用JSONP代理获得标准JSON响应。

当您从域a请求到域B时,您应该在代理定义中提供回调函数。在请求完成后,回调函数将在中使用

例如,在Flickr REST服务中,有一个
jsoncallback
参数,为了完成请求,我们应该给出函数名。这样,我们的请求url将是:

../jsoncallback=ourFunction

为了能够提供我们的函数名,ExtJS中有一个属性是
callbackKey
。 像这样:

PS:我知道,您在文档中找不到
回调
属性,只是为了确保有。检查
ext-all-debug-w-comments.js
文件,第108486行



由于其性质,您应该在第二个域上提供
回调
函数。请仔细阅读文件。来自服务器的响应是什么样子的?它需要格式化为代理可以执行的回调。请参见此处JsonP代理的文档(和示例响应):@existdisle感谢您的回复:[{“empid”:1,“age”:12,“department”:“sme”,“email”:”muruga@techaffinity.com“,”姓名“:”murugan“,”电话“:”4565441,“职务“:”软件工程师“},{”empid“:2,“年龄”:23,“部门“:”sme“,”电子邮件“:”jessy@techaffinity.com,“姓名”:“Jessyfhgfh”,“电话”:4423023222,“指定”:“软件工程师”}]这是我的响应输出数据,如何使用回调函数?@Oğuzğelikdemir感谢您的回复,您能否给出任何具体原因或示例,我为什么要使用回调()。。。。
Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['empid', 'name', 'email']
});

Ext.data.JsonP.request('http://api.flickr.com/services/feeds/photos_public.gne', {
    callbackKey: 'jsoncallback',
    callback: ourFunctionName
});
Ext.data.JsonP.request('http://api.flickr.com/services/feeds/photos_public.gne', {
    callbackKey: 'jsoncallback',
    callback: function(data) {
        ...
    }
});