我有一个简单的脚本,它用从服务器收到的值填充 html 表单
$.ajax({
url: getUrl(),
dataType: "xml"
}).done(function(xml) {
//get values from xml file and fill in html form
});
和服务器端的简单代码,生成 xml
public void writeXmlValues() throws Exception {
final HttpServletResponse response = context.getHttpResponse();
response.setContentType("application/xml; charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
writeXmlValues(out, values);
}
finally
{
try
{
out.close();
}
catch (Throwable ignored){}
}
}
在表单中添加 textarea 字段时,我遇到了问题。该字段可以包含带行分隔符的文本,我可以在 xml 中放置多行文本。结果如下:
<?xml version='1.0' encoding='UTF-8'?>
<parameter name="Conclusion">eshgseht
awegewhw
agwhg</parameter>
但是 js 回调中的文本看起来几乎没有什么不同(这里是原样的代码):
<?xml version='1.0' encoding='UTF-8'?><parameter name="Conclusion">eshgseht awegewhw agwhg</parameter>
没有换行了!这不是 jquery 的错误(据我在 Firebug 中看到的,响应已经是一行文本),这不是 StAX 的错误(它会生成正确的 xml)。我不知道是怎么回事。我可以使用 XML 格式获取换行符吗?或者我应该使用 json 或其他东西(这不是首选方式)?
更新: 最后我找到了这种行为的原因。即使使用 setContentType("application/xml"),响应也被解释为 text/html。非常感谢您的建议。