获取xml响应而不是json

时间:2014-04-15 13:25:04

标签: jquery ajax xml json

我正在使用jquery ajax调用我的网络服务:

$.ajax({
    type: sType,
    url: "myWebService.asmx",
    cache: serviceCash,
    data: params,
    accepts: {
        text: "application/json"
    },
    contentType: contentType,
    dataType: "json"
    ....

Web服务看起来像:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetLang(string cLang, string iLangVersion ){
//code to create json string
return jsonResp;
}

当我有类型时:POST evertyhing工作完美。

type: "POST",
data: "{ 'clang':'ANG', 'iLangVersion' : '1'}",
contentType:"application/json; charset=UTF-8",
dataType: "json"

回应是纯粹的json:

{"d":"{\"userSettingsData\":{\" ...and so on

当我将请求更改为GET方法时:

type: "GET",
data: "clang=ANG&iLangVersion=1",
contentType:"application/x-www-form-urlencoded; charset=UTF-8",
dataType: "json"

响应是xml:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{"translation":"\r\n{\"translation\":{\"..and so on

我应该像以前一样以json格式获得响应? 所以,我将url编码数据发送到Web服务,作为回报,我想得到json而不是XML! 我已经定义了dataType:&#34; json&#34; - 您期望从服务器返回的数据类型 我已经设置了接受的类型:接受:{text:&#34; application / json&#34;} - 告诉服务器它将接受什么样的响应。

但我得到了xml作为回报。我应该改变什么?

2 个答案:

答案 0 :(得分:0)

好吧,如果您可以控制发送返回的脚本,那么您应该发布该代码。如果您无法控制该脚本,那么最好的办法是在您的帖子请求中设置dataType:“xml”并以此方式处理。

如果不从处理请求的脚本中执行此操作,您就无法将XML强制转换为JSON。

答案 1 :(得分:0)

这取决于服务器端进程的编写方式,但在第一块代码中,您告诉服务器您需要JSON响应:

accepts: {
    text: "application/json"
},

如果将它添加到第二个请求中,可能会有效。

如果不这样做,您将需要更仔细地检查服务器端代码,以查看它用于确定响应类型的逻辑。