Extjs 如何发送跨域请求以加载网格Ext JS 4.1
如何使用AJAX向ws发送跨域请求,将数据加载到网格中?我可以发送请求,但是如何使用回调方法将数据加载到网格中呢 在控制器文件中:Extjs 如何发送跨域请求以加载网格Ext JS 4.1,extjs,grid,jsonp,extjs4.1,Extjs,Grid,Jsonp,Extjs4.1,如何使用AJAX向ws发送跨域请求,将数据加载到网格中?我可以发送请求,但是如何使用回调方法将数据加载到网格中呢 在控制器文件中: if(searchText){ var resultGrid = Ext.getCmp('myResultGrid'); store.setProxy({ type: 'ajax', // cross domain request
if(searchText){
var resultGrid = Ext.getCmp('myResultGrid');
store.setProxy({
type: 'ajax',
// cross domain request
url:"http://3.xxx.xxx.77/cs/sid/"+searchText,
actionMethods:{read:'GET'},
pageParam: false, //to remove param "page"
startParam: false, //to remove param "start"
limitParam: false,
timeout:9000000,
noCache : true,
reader: {
type: 'json'
}
});
resultGrid.store.load({
scope: this,
callback: function(records, operation, success)
{
var totalcount= 0;
totalcount = records.count(true);
if(totalcount > 0)
{
// Load the data into grid ???
}
else
{
Ext.Msg.alert("No Records found.");
}
}
});
}
存储文件:SearchResultsStore.js
Ext.define('AM.store.SearchResultsStore', {
extend: 'Ext.data.Store',
model: 'AM.model.SearchModel',
autoLoad: false
});
型号:
Ext.define('AM.model.SearchModel', {
extend: 'Ext.data.Model',
fields: ['slno', 'customer']
});
json响应
[{"slno": "12454","customer": "acd"}]
请帮助我卡住了!!!提前感谢您不能使用ajax跨域发送请求,这是这里的实际问题。您假设必须在加载回调中执行某些操作,因为您首先没有接收回数据,这与您的问题无关,您不需要使用回调。您需要做的是使用“jsonp”代理而不是ajax来配置您的存储,这将允许您进行跨域调用:
store.setProxy({
type: 'jsonp',
// cross domain request
url:"http://3.xxx.xxx.77/cs/sid/"+searchText,
actionMethods:{read:'GET'},
pageParam: false, //to remove param "page"
startParam: false, //to remove param "start"
limitParam: false,
timeout:9000000,
noCache : true,
reader: {
type: 'json'
}
});
你不是把事情复杂化了吗?如果网格将其
存储:
配置设置为您的存储,一旦存储加载,网格将自动反映更改。同意,只需查看官方文档中的一些简单网格示例。因此无需定义回调方法。。。这将由JSONP正确处理。是否需要在服务器端(即json响应)执行任何操作。我尝试了这个,但无法将JSON数据加载到网格中。我不是jsonp的专家,因此我的示例可能不完全准确,您可能需要定义回调方法。请看这家伙的问题,了解我帮助他解决的一个实际示例:在更改为jsonp后,请求将作为GET请求(之前内部转换为选项),并带有回调函数名。它调用回调方法。json响应中未做任何更改。我使用的是相同的json,但它的加载。。。。加载。。。加载。。。因此,我如何捕获数据并将其设置为存储。发送的请求:10.xxx.xxx.14/ab/resources/scripts/ab/data/bomsearchresults.json?_dc=1345576045890&callback=Ext.data.JsonP.callback1,下面是回调方法:resultGrid.store.load({范围:this,回调:函数(记录,操作,成功){//这里我需要设置数据警报(操作+“”+成功);});Ext.data.JsonP.callback1([{“slno”:“12454”,“customer”:“acd”}]);