3

我有一个简单的脚本,它用从服务器收到的值填充 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。非常感谢您的建议。

4

1 回答 1

1

您是否考虑使用 CDATA 写入值?有关CDATA 和示例实现的更多信息

于 2012-12-06T10:56:11.603 回答