我正在使用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作为回报。我应该改变什么?
答案 0 :(得分:0)
好吧,如果您可以控制发送返回的脚本,那么您应该发布该代码。如果您无法控制该脚本,那么最好的办法是在您的帖子请求中设置dataType:“xml”并以此方式处理。
如果不从处理请求的脚本中执行此操作,您就无法将XML强制转换为JSON。
答案 1 :(得分:0)
这取决于服务器端进程的编写方式,但在第一块代码中,您告诉服务器您需要JSON响应:
accepts: {
text: "application/json"
},
如果将它添加到第二个请求中,可能会有效。
如果不这样做,您将需要更仔细地检查服务器端代码,以查看它用于确定响应类型的逻辑。