个人资料

跳过导航链接首页 > 博客列表 > 博客正文

使用AJAX调用WebService返回xml不返回json原因以及解决办法

:

初次尝试用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数据了!


(完)

songshizhao
最初发表2018/2/28 20:13:56 最近更新2018/2/28 20:13:56 4947
为此篇作品打分
10