代码之家  ›  专栏  ›  技术社区  ›  Naruto

在Javascript中加载XML数据时出错

  •  0
  • Naruto  · 技术社区  · 6 年前

    我在用Javascript加载XML数据时遇到了一个问题。但是,如果我在经典ASP中加载相同的XML,它就可以工作,但是如果我在Javascript中加载相同的XML,它就失败了。

    set ObjXMLDom = nothing 
    set ObjXMLDom = server.CreateObject("Microsoft.XMLDOM")
    ObjXMLDom.async = False
    
    set objSvr = Server.CreateObject("myComMethod.MyComMethod.1")
    ObjXMLDom.loadXML(objSvr.GetHierarchyXML()) 'XML loads perfectly fine from server. even if the special character is Dash –
    Response.Write(ObjXMLDom.xml) 
    

    用Javascript编写代码来加载XML,但是对于某些特殊字符它失败了。

    $.ajax("get_xml_from_server.asp", {
                    type: 'GET',
                    data: { name: groupID, session: sesionID, Employee: empID },
                    beforeSend: function () {
                    },
    success: function (data, status, jqXhr) {
    
    //Data has got the XML string, we can see it by putting alert
    
    alert(data); 
    
    var myXML = new ActiveXObject("Microsoft.XMLDOM");
    myXML.async = false;
    myXML.loadXML(data); //Here it fails for some special characters like Dash – 
    
    
    if (myXML.parseError.errorCode != 0) 
          {
              var myErr = myXML.parseError;
              alert("You have error " + myErr.reason + myErr.line + myErr.srcText);
          } 
    else  {
              alert(myXML.xml);
          } 
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Michael Kay    6 年前

    我怀疑存在编码问题:XML文件采用一种编码方式,而解析器尝试使用不同的编码方式对其进行解码,这将导致无法对非ASCII字符进行解码。你没有给我们任何关于编码的信息,所以这完全是猜测。尝试建立

    (a) 服务器上“磁盘上”XML的实际编码是什么

    (b) 文件开头的XML声明(如果有的话)说明编码是什么?

    (c) 将XML负载传递到浏览器的HTTP响应的媒体类型和编码是什么?