读书人

ExtJs poxy 数据异步传输有关问题

发布时间: 2013-04-07 12:50:11 作者: rapoo

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

读书人网 >Ajax

热点推荐