排除JQuery通过HttpGet调用WebService返回Json时“parserror”错误

 更新时间:2011年10月18日 21:57:33   作者:  
排除JQuery通过HttpGet调用WebService返回Json时“parserror”错误的解决方法。
JQuery大家都经常用,以前用的时候没有注意什么。最近本人在使用JQuery通过HttpGet方式调用WebService时,却发现服务端并非如人所愿返回json数据,而是返回错误提示:parserror。
如今问题被顺利解决,下面是解决过程

首先看客户端使用JQuery调用WebService的代码:
复制代码 代码如下:

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的代码为:
复制代码 代码如下:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld() {
return "Hello World";
}

使用Fiddler跟踪,发现客户端调用服务器方法后,服务器返回的数据为XML格式。Why? 明明自己已经在方法属性上指明返回json,但是系统却还是我行我素照常返回XML呢?
到此,大家的眼睛都是雪亮的。海内外的网友一致指出.NET 3.5平台是需要检查contentType参数的,于是将上面代码中的代码注释去除,重新运行。这时又出现error错误。用Fiddler一查,发现是服务器返回了500错误。具体错误为:
复制代码 代码如下:

{"Message":"试图使用 GET 请求调用方法“HelloWorld”,但不允许这样做。","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"}

可是,按理说,我已经在web.config文件中对WebService做了相应的配置,为什么服务器还是不允许使用GET方式调用呢?无奈,将UseHttpGet属性加上,并设置其为true,再祭出Fiddler一查,OK,服务器返回了json格式的数据。

再一看微软的代码注释,有如下一段,正好解释了上面的错误提示:
复制代码 代码如下:

// 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.

那么为什么Web.config已经允许使用GET,却不起作用呢?这只能解释为:Web.config文件中的配置只是配置允许WebService接收Get请求,具体到每一个方法时,还必须要配置该方法的调用方式才行(如有错误,请指出。谢谢!!)。
有人回复:
将ws的scriptmethod那句改为:[System.Web.Script.Services.ScriptService]
js中启用content type
文章出处:www.cnblogs.com/jizhong

相关文章

  • ASP.NET Core3.x API版本控制的实现

    ASP.NET Core3.x API版本控制的实现

    这篇文章主要介绍了ASP.NET Core3.x API版本控制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • .NET微信公众号获取OpenID和用户信息

    .NET微信公众号获取OpenID和用户信息

    这篇文章主要为大家详细介绍了.NET微信公众号获取OpenID和用户信息的方法,用户OpenID对于微信公众平台开发尤为重要,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • asp.net 防止用户通过后退按钮重复提交表单

    asp.net 防止用户通过后退按钮重复提交表单

    经过一番仔细的寻寻觅觅之后,我发现仍旧无法找出真正能够完全禁用浏览器后退按钮的办法。所有这里介绍的方法都能够在不同程度上、以不同的方式禁止用户返回前一页面,但它们都有各自的局限。
    2009-11-11
  • ASP.NET―001:GridView绑定List、页面返回值具体实现

    ASP.NET―001:GridView绑定List、页面返回值具体实现

    这篇文章主要介绍了ASP.NET―GridView绑定List、页面返回值具体实现,需要的朋友可以参考下
    2014-02-02
  • .net使用自定义类属性实例

    .net使用自定义类属性实例

    这篇文章主要介绍了.net使用自定义类属性实例,详细讲述了自定义类属性的原理及实现方法,需要的朋友可以参考下
    2014-10-10
  • 详解.NET数据库连接池

    详解.NET数据库连接池

    我们了解的.NET数据库连接池真的是全部吗?本文详细讲解了.NET数据库连接池,可以带领大家了解.NET数据库连接池,大家可以参考一下
    2021-08-08
  • 模拟HTTP请求实现网页自动操作及数据采集的方法

    模拟HTTP请求实现网页自动操作及数据采集的方法

    下面小编就为大家带来一篇模拟HTTP请求实现网页自动操作及数据采集的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • ASP.NET使用X509Certificate2出现一系列问题的解决方法

    ASP.NET使用X509Certificate2出现一系列问题的解决方法

    这篇文章主要为大家详细介绍了ASP.NET使用X509Certificate2出现一系列问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • asp.NET 脏字过滤算法 修改版

    asp.NET 脏字过滤算法 修改版

    我们网站的脏字字典中大概有600多个词,而且会发生变化,因此简单的在数据新增/修改的时候做一次脏字过滤是不够的。在网站从.NET 1.1到2.0改版的时候,对新版的测试发现旧的脏字过滤算法耗费的时间过长,需要做一些优化。
    2009-10-10
  • asp.net中通过DropDownList的值去控制TextBox是否可编写的实现代码

    asp.net中通过DropDownList的值去控制TextBox是否可编写的实现代码

    Web窗体上有两控件,DropDownList1,TextBox1,当DropDownList的值选择是YES的时候,TextBox1可编辑,当选择NO的时候,TextBox1的值为空,并且不能编辑,该如何实现
    2012-11-11

最新评论