如何在没有标题的情况下提取响应内容(仅限正文)?
$.ajax({
type: "GET",
url: "http://myRestservice.domain.com",
success: function(data, textStatus, request){
alert(data); //This prints the response with the header.
},
error: function(){
alert('fail');
}
});
上面的代码打印
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 12 Jul 2013 20:24:06 GMT
Content-Length: 232
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{"UserID":3,"RoleID":8,"ActivityID":3,"RoleIName":"E",,"Duration":10,"ValidationMsg":"Passed"}</string>
我需要提取ValidationMsg的值。这是一个休息服务电话。
如何在没有标题信息的情况下获得响应?
答案 0 :(得分:4)
我认为您的服务器正在提供您不期望的内容类型。
text/plain
或text/html
。application/json
传递。dataType
指定为“json”。通常$ .ajax适当地猜测;但是,由于您的服务器声称它是某种文本,因此您的回复中会出现标题。答案 1 :(得分:2)
如果您在 data 参数中找回标题,我怀疑您的服务器代码有问题。您提供的代码可以很好地连接到返回有效XML的测试服务器 - data 参数最终包含XML文档对象。
我建议您尝试在浏览器中打开该网址并查看其返回的内容。此外,如果在服务器上以编程方式生成XML,您可以尝试仅创建一个静态XML文件,看看它是否更好。
让服务器返回有效的XML后,您可以在 data 参数中从XML对象中提取字符串内容,如下所示:
var stringContent = $(data).text();
然后,您可以使用以下命令解析该字符串内容中的JSON:
var json = $.parseJSON(stringContent);
最后用:
提取 validationMessage 键var validationMessage = json.ValidationMsg;
这假设该字符串元素中的JSON是有效的json。但是,在您给出的示例中,“RoleIName”和“Duration”之间有一个双逗号,使其无效。
如果你无法在服务器端解决这个问题,你可以在客户端用一个简单的字符串替换来修复它:
stringContent = stringContent.replace(',,', ',');
这通常不是特别安全的事情,但是如果你不担心json内容中的逗号可能会被这样的调用破坏,那么它应该不是问题。
总而言之,最终的成功功能看起来应该是这样的:
success: function(data, textStatus, request){
var stringContent = $(data).text();
stringContent = stringContent.replace(',,', ',');
var json = $.parseJSON(stringContent);
var validationMessage = json.ValidationMsg;
/* do whatever you need with the validationMessage here */
},
这是一个展示工作脚本的codepen链接:http://codepen.io/anon/pen/LeDlg
答案 2 :(得分:0)
我的想法是尝试在ajax调用中使用contentType:
$.ajax({
type: "GET",
url: "http://myRestservice.domain.com",
**contentType: "application/json",**
success: function(data, textStatus, request){
alert(data); //This prints the response with the header.
},
error: function(){
alert('fail');
}
});
然后尝试捕获json对象