初次尝试用AJAX调用webservice,结果无论怎么设置webservice返回的都是xml对象,一般的jquery处理json是更方便的。
webservice理论上将下面这段代码按照说明取消注释,就可以返回json数据了。
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
webservice是可以自动在xml和json当中自由切换的,当使用json请求的时候返回的数据就会是json,但我多次尝试一直返回xml,最后我终于找到下面这篇文章: jQuery调用WebService返回JSON数据
原来在jquery中,如果Content-Length为0或者没有设置,它会忽略你设置的contentType,WebService就不知道我们需要JSON格式的数据,它就返回了默认的XML格式的数据给我们。
解决办法也简单,就是设置一下data参数,或者用BeforeSend重设一下contentType。如下:
$.ajax({ url: "WebService1.asmx/WS1", type: "POST", dataType: "json", data: "", beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); }, success: function(json) { alert(json.d); }, error: function(x, e) { alert(x.responseText); }, complete: function(x) { alert(x.responseText); } });
这样,就可以返回json数据了!
(完)