Extjs 如何发送跨域请求以加载网格Ext JS 4.1

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

如何使用AJAX向ws发送跨域请求,将数据加载到网格中?我可以发送请求,但是如何使用回调方法将数据加载到网格中呢

在控制器文件中:

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”}]);