使用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-02-28T08:13:56 访问量:405
评论 [发表评论]