Microsoft.XMLHTTP documentElement为NULL

时间:2015-01-16 17:20:12

标签: javascript xml asp-classic xmlhttprequest

有人可以提供一些故障排除提示吗?对于非常小的数据结果子集,我的PostXML()返回值为NULL。这适用于99.9%的使用率。我认为失败的数据可能有特殊字符,但与类似的数据集相比,它的相同并传递好吗? File.asp中的oXMLDoc.xml在调试时包含一个有效的XML字符串,但在它回到我的JS调用时它包含null

Microsoft.XMLHTTP对象中看起来像有效的XML元素被破坏是否存在任何已知问题?

function PostXML(sXML)

{
    var oHTTPPost = new ActiveXObject("Microsoft.XMLHTTP");
    oHTTPPost.Open("POST","File.asp", false);
    oHTTPPost.send(sXML);

    // documentElement is null???
    return oHTTPPost.responseXML.documentElement;
}

File.asp

<%
' oXMLDoc.xml contains valid XML here, but is NULL in the calling JS
Response.ContentType = "text/xml"
Response.Write oXMLDoc.xml
%>

3 个答案:

答案 0 :(得分:1)

检查响应标头。内容类型必须为application/xml

XMLHttpRequest在当前的IE中可用。我建议仅将ActiveX用作后备。

您可以覆盖其上的内容mimetype:

xhr = new XMLHttpRequest();
xhr.overrideMimeType("application/xml");
...

这也可能在ActiveX对象上。但我不确定。

另一种可能性是使用DOMParser将接收到的字符串转换为Document实例。

答案 1 :(得分:0)

发现了这个问题。

使用IE Dev / Debugger,我在其中一个字符串属性中找到了xEFxBFxBF。本产品使用MS SQL Server,即使复制/粘贴到Notepad ++中,查询输出也不会反映这些字符。我假设Ent Manager过滤掉不支持的字符... / =

感谢帮助人们!

答案 2 :(得分:-1)

哎哟人。

是否可以使用jQuery?

我知道的另一件事是,如果返回xml稍微偏离(格式不佳的xml,区分大小写,非合法字符),javascript将废弃返回值。

使用jQuery,您可以使用更好的调试选项来查看错误。