在Javascript中加载XML数据时出错

时间:2018-10-24 03:53:14

标签: javascript jquery ajax xml xml-parsing

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

这是在经典ASP中加载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) 

使用Java代码编写代码以加载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 个答案:

答案 0 :(得分:1)

我怀疑存在编码问题:XML文件采用一种编码,并且解析器尝试使用不同的编码对其进行解码,这导致无法解码非ASCII字符。您没有提供有关编码的信息,因此这完全是推测。尝试建立

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

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

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

我想可能是您需要更改Web服务器/ HTTP配置中的某些内容以确保XML文件正确传递。