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'},