使用Ajax请求,获取xml数据结构,在IE10、11会出现错误:
请求xml文件为:
在IE 10以上浏览器中:
IE9及以下浏览器返回:
查看文档,我们发现:
针对这种情况,我们需要对ajax请求进行重写,针对IE跟非IE使用不同的方式解析xml文档数据:
demo 1:
function $ajax(url,content,callback) { var xmlVer = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"],xmlObj; if (cQuery.browser.isAllIE) { for (var i = 0; i < xmlVer.length; i++) { try { xmlObj = new ActiveXObject(xmlVer[i]); break; } catch (e) { } } } else { xmlObj = new XMLHttpRequest; } if (!xmlObj) { return; } xmlObj.open(content ? "POST" : "GET",url || location.href,!!callback); xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); function getReturnValue() { return xmlObj.status == 200 ? /xml/i.test(xmlObj.getResponseHeader("content-type")) ? xmlObj.responseXML : xmlObj.responseText : null; } if (callback) { xmlObj.onreadystatechange = function () { if (xmlObj.readyState == 4) { var txt = getReturnValue(); if (callback(txt) === true) { setTimeout(function () { $ajax(url,callback); },1000); } } }; } xmlObj.send(content || ""); return callback ? xmlObj : getReturnValue(); }
demo 2:
var www = function (text) { try { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = "false"; xmlDoc.loadXML(text); } catch (e) { try //Firefox,Mozilla,Opera,etc. { parser = new DOMParser(); xmlDoc = parser.parseFromString(text,"text/xml"); } catch (e) { alert(e.message); return; } } alert(xmlDoc.text); //console.log(xmlDoc); //console.log(xmlDoc.text); } var xmlHttpReq = new XMLHttpRequest(); var realUrl = "http://172.16.86.171/rescorpmobile.3.4/html/wxj.xslt"; if (xmlHttpReq != null) { xmlHttpReq.open("GET",realUrl,true); xmlHttpReq.onreadystatechange = function () { if (xmlHttpReq.readyState == 4) { if (xmlHttpReq.status == 200) { //console.log(xmlHttpReq.responseText); www(xmlHttpReq.responseText); //console.log(loadXML(xmlHttpReq.responseText)); } } }; xmlHttpReq.send(null); }
Best
原文链接:https://www.f2er.com/ajax/162967.html