【问题标题】:Escape XML special chars in AJAX在 AJAX 中转义 XML 特殊字符
【发布时间】:2009-10-07 16:30:59
【问题描述】:

我有一个包含一些无效字符的 XML 文档(例如 é)。不幸的是,我无法更改源 XML 文件,并且必须通过 AJAX 读取该文件。如何在客户端转义这些字符?

非常感谢,

史蒂夫

编辑:

$.ajax({
        type: "GET",
        url: "http://foo.com",


        dataType: "xml",
        success: function(xml) {
            $(xml).find('images').each(function(){
                $(this).find('pic').each(function() {
                    ...code...
                });

            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert(textStatus);
        } 

    })

【问题讨论】:

  • "é" 不是 XML 的无效字符,不需要转义。尽管根据您的情况,它可能没有正确编码。
  • 它使用 utf-8,并且 é 在 IE 和 Safari 中导致解析错误
  • 您的服务器发送什么内容类型的标头?服务器上文件的实际编码是什么?有没有编码=“???”在 XML 文件的开头。如果你想避免问题,这三个必须匹配。

标签: xml ajax escaping


【解决方案1】:

escape() 和 unescape() 不适用于您的架构?

【讨论】:

  • 在我发布的示例中我会在哪里添加这个
  • 无处,在您发布的示例中。如果问题出在 jquery 执行期间(解析结果),那么您真的必须找出它失败的原因(因为 é 在 xml 中完全有效)
【解决方案2】:

您可能正在寻找以下 xml 处理指令 (PI):

<?xml version="1.0" encoding="ISO-8859-1"?>

编辑 1:客户端解决方案:

你能把那个 xml 内容读成字符串吗?如果是,请将现有 PI 替换为上述 PI 和 .loadXML()

EDIT 2:考虑这个链接Specifying the Data Type for AJAX Requests

【讨论】:

    【解决方案3】:

    我自己解决了这个问题,说服管理员正确格式化他们的 XML 文件。一旦他们删除/修复了特殊字符,问题就解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      相关资源
      最近更新 更多