在的WebAPI,说我回包裹在一个HTTP响应的字符串:ASP.NET WebAPI:如何控制返回给客户端的字符串内容?
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
当调用从jQuery的这个动作,响应文本返回前处理。所以在XHR,我得到的是这样的:
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
换句话说,该字符串被双引号括起来,和特殊字符获取逃脱,使他们出现在输出(实际的警告是“线路1 \ r \ n Line2“,因此换行符不会被保留,而是被编码并显示在响应文本中)。
我可以通过删除引号并在客户端上替换换行,像这样解决这个问题:
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
但是,有没有办法告诉的WebAPI如何格式化字符串的反应?例如,不要用双引号包装它们并转换转义字符?
谢谢这正是我一直在寻找。最后一个问题,这是更好的:介质类型格式添加到配置和使用“文本/纯”作为第三个参数来CreateResponse,或使用新的PlaintTextFormatter()作为第三个参数? – danludwig
我赞成第一个选项,因为Web API会从配置中找到合适的格式化程序。如果你改变格式化程序,你只需要在一个地方做。 –
为什么jQuery的ajax将响应解释为错误? –