ajax请求获取xml数据结构

使用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, content, 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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-19 03:24:20

ajax请求获取xml数据结构的相关文章

ajax请求获取的数据无法赋值给全局变量问题总结

一.总结: 1.问题描述: 今天做项目遇到在用表单显示详细信息的过程中ajax请求获取的数据无法赋值给全局变量的情况,从列表页面进入详情页,在详情页面被渲染了之后就会调用js文件里的接口向服务器请求数据,除了详情页面被加载之后需要向服务器发送ajax请求,在详情页面还有几个表单控件的属性需要去请求服务器获取实际项目中要求要显示的数据. 如下代码,直接在ajax请求中改变表单控件的值,避开了给全局变量赋值. 给全局变量赋值的解决办法,给ajax请求设置async为false,表示请求为同步请求:

html页面通过ajax请求获取session中的值

在利用springboot进行web开发时,遇到这样一个问题:html如何获取session中的值,实现用户登录系统后首页展示xx欢迎您. 也就是需要实现html通过ajax请求获取session中的值. 1.登录页面 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <meta charset="utf-8"> <meta http-equiv=&quo

通过request请求获取&lt;xml&gt;

使用io流完成request传参,获取<xml>,具体代码如下: public Object getParameter(HttpServletRequest request, HttpServletResponse response){ request.setCharacterEncoding("UTF-8");//设置字符格式 response.setCharacterEncoding("UTF-8"); response.setContentType

jsp Ajax请求(返回xml数据类型)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP page</title> <s

ajax请求获取到数据,但是仍然不能触发success方法

这个问题消耗了我的很多时间. 原来是因为.php文件中的 echo echo json_encode($k);  后面少加了个exit; 因为echo echo json_encode($k); 之后还是有其他内容的,所以ajax获取到除了json格式以外的数据. 这个时候会触发error方法: error: function(XMLHttpRequest, textStatus, errorThrown){ alert(XMLHttpRequest.status); alert(XMLHttp

提问!同一ajax请求获取的图片路劲,在谷歌浏览器能正确展示图片,在火狐浏览器则显示路径undefined

今天的工作学习之路遇见一个奇葩的问题,作为初级攻城狮的小生实在不知如何解决,都已经壁咚度娘一整天了,都未能解决问题,实属无奈,一开始认为是浏览器兼容的问题,但左看右看,也不是,也尝试过是不是页面加载与请求后没对应上,发现也不是,检查返回的结果,居然是undefined,可是在谷歌浏览器没有任何问题能正常展示图片,在火狐浏览器却是这样,来,看图说话: 首先此<img>标签为js动态拼接页面,因为获取的是会员等级,通过请求接口在另一个系统后台抓取图片路径,此拼接在循环中,每循环一次存入便存入数组中

使用原生JS发送AJAX请求(XML,JSON解析)

mybutton.addEventListener('click', (e) => { let request = new XMLHttpRequest() request.onreadystatechange = () => { if(request.readyState === 4) { console.log('请求完毕') if(request.status >= 200 & request.status <= 300) { console.log('请求成功')

ajax请求获取实时数据

<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <script src="WebUI/js/clienthint.js"></script> &l

asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染

在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不需要解析这一步. 下面是示例: 控制器类: public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } [HttpPost] public Pa