我在用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);
}
答案 0 :(得分:1)
我怀疑存在编码问题:XML文件采用一种编码,并且解析器尝试使用不同的编码对其进行解码,这导致无法解码非ASCII字符。您没有提供有关编码的信息,因此这完全是推测。尝试建立
(a)服务器上“磁盘上” XML的实际编码是什么
(b)文件开头的XML声明(如果有)表示编码是什么?
(c)将XML有效负载传递给浏览器的HTTP响应的媒体类型和编码是什么?
我想可能是您需要更改Web服务器/ HTTP配置中的某些内容以确保XML文件正确传递。