排除JQuery通过HttpGet调用WebService返回Json时“pars
解决JQuery通过HttpGet调用WebService返回Json时的“parserror”问题
JQuery这个工具在开发中常被使用,但最近我遇到一个问题,在使用JQuery的HttpGet方式调用WebService时,返回的并非预期的json数据,而是一个错误提示“parserror”。这个问题困扰了我一段时间,现在终于得以解决。在此,我想分享一下我的经历以及解决方案。
让我们看看客户端使用JQuery调用WebService的代码:
```javascript
getHellobyAjax: function(callabckFun) {
$.ajax({
type: "GET",
url: "WebService.asmx/HelloWorld",
// contentType: "application/json; charset=utf-8",
// data:"{}",
cache: false,
dataType: "json",
success: function(msg) {
if (callabckFun) {
callabckFun(msg);
} else {
alert("Not exists callback function.");
}
},
error: function(obj, message) {
alert(message);
}
});
}
```
WebService的服务端代码为:
```csharp
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld() {
return "Hello World";
}
```
使用Fiddler跟踪,我发现客户端调用服务器方法后,服务器返回的数据竟然是XML格式。明明已经在方法属性上指定了返回json,为什么系统还是返回XML呢?
经过研究,我了解到在.NET 3.5平台上,调用WebService时需要注意contentType参数。于是,我尝试注释掉代码中的contentType注释,重新运行。这时,又出现了error错误。使用Fiddler一查,服务器返回了500错误,具体错误信息为:
```json
{"Message":"试图使用 GET 请求调用方法“HelloWorld”,但不允许这样做。","StackTrace":"..."}
```
虽然我已经在web.config文件中对WebService做了相应的配置,允许使用GET方式调用,但为什么服务器还是不允许呢?经过进一步的研究,我发现web.config的配置只是允许WebService接收Get请求,具体到每一个方法时,还需要配置该方法的调用方式。微软的代码注释中有这样一段,正好解释了上面的错误提示:
```csharp
// true if the method is invoked by using the HTTP GET command; false if the
// method is invoked by using the HTTP POST command. The default is false.
```
为了解决这个问题,我将WebService的[ScriptMethod]属性中的UseHttpGet属性设置为true。再次使用Fiddler跟踪,服务器成功返回了json格式的数据。
这个问题的解决过程让我学到了很多关于WebService和JQuery的知识。希望对大家有所帮助。如果有任何错误或疑问,请指出,谢谢!文章出处:狼的网站SEO优化博客。
编程语言
- 排除JQuery通过HttpGet调用WebService返回Json时“pars
- Javascript es7中比较实用的两个方法示例
- PHP实现递归无限级分类
- Laravel给生产环境添加监听事件(SQL日志监听)
- JS使用cookie实现DIV提示框只显示一次的方法
- asp.net中ADO SQL数据库 笔记汇总 持续更新中
- asp.net使用jQuery Uploadify上传附件示例
- 深入SQL截取字符串(substring与patindex)的详解
- jQuery加密密码到cookie的实现代码
- php使用指定编码导出mysql数据到csv文件的方法
- php查看一个变量的占用内存的实例代码
- JS对象深度克隆实例分析
- Windows平台实现PHP连接SQL Server2008的方法
- 实现css文字垂直居中的8种方法
- jQuery中has()方法用法实例
- PHP实现字母数字混合验证码功能