extjs使用jsonp,从远程url访问数据
使用extjs,我从一个系统运行服务器,在另一个系统中提供url,在extjs版本:4.02中使用JSONP,当我签入响应时,我获取json格式的数据,当我尝试在控制台中打印或存储时,我得不到..这是我的extjs代码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
<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) {
...
}
});