日期:2014-05-16  浏览次数:20593 次

ExtJs poxy 数据异步传输问题
求大哥们帮忙,,该问题困扰几天了,一直未得解决。当我的URL调用的是webservice的时候,以下是错误信息:
{"Message":"尝试使用 GET 请求调用方法“GePartList”,但不允许这样做。","StackTrace":"   在 System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

如果我将URL改成wcf也不行。



 
qa.data.GEN_QA_PART = new Ext.data.JsonStore({
    model : "GEN_QA_PART",
    loadingText: false,
    autoDestory: true,
    autoLoad: false,
    proxy: {
        type: 'ajax',
        headers: { "Accept": 'application/json', "Content-Type": 'application/json' },
        url: 'GQSService.asmx/GePartList',     
        reader: {
            type: 'json',
            root: 'd',
            idProperty: 'PART_ID'
        }
    },
    listeners: {
        scope : this,
        load: function(){
        }
    }
});


 



而我在使用  

 Ext.Ajax.request({
         method: 'POST',  
         headers : {"Accept" : 'application/json', "Content-Type" : 'application/json'},
         url: 'GQSService.asmx/GetDefect_GroupList',
});


又没有问题,还请大家帮忙。在线等待.谢谢

------解决方案--------------------
本帖最后由 showbo 于 2013-03-26 09:49:47 编辑
webservice配置的问题,不允许get访问,修改web.config允许get访问webservice。

ajax你指定了post访问


并且返回的json字符串的d的属性值为string,不是json对象,所以JsonStore无法使用这种数据源,你需要使用Ext.ajax请求url得到返回值后,eval或者Ext.decode属性d得到实际的json对象,设置JsonStore的data属性为eval后的json对象

参考
web服务因URL意外地以/**结束,请求格式无法识别
jQuery通过调用webservice返回json数据的问题
------解决方案--------------------

修改content-type 的类型
 

 headers : {"Accept" : 'application/json', "Content-Type" : 'charset=utf-8'},