JQuery响应类型是字符串而不是文档对象

时间:2015-10-07 13:03:43

标签: javascript jquery internet-explorer-11

我在使用jquery 1.7处理发布请求的响应对象的Internet Explorer 11时遇到了一些麻烦。

loader.request = jQuery
            .post("/gateway-portal-war/prediction", {
                action : "index",
                matchcode : this.customerMatchCode,
                timespan : timespan
            })
            .done(
                    function(data) {
                        loader.displayData(data
                                .getElementsByTagName("response")[0]);
                        document.getElementById('loader_'
                                + loader.customerMatchCode).style.display = "none";
                    });

在firefox / chrome中,该对象被视为一个html文档元素,可以进行进一步处理,从文档中获取响应等等。

enter image description here

这里的问题是IE中的响应是字符串中的xml,如下所示:

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<response>\n ...</response>\n"

我试图通过将响应转换为activeXObject来修复那个

xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;

//xmlDoc.load(data);
xmlDoc.loadXML(data);

但是在调试之后我发现ActiveXObject中的几乎所有东西都没有被初始化或者是null,之后会产生一些错误

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要在ajax调用中定义dataType;

    .post("/gateway-portal-war/prediction", {
            action : "index",
            dataType: "xml", //here
            matchcode : this.customerMatchCode,
            timespan : timespan
        })

jQuery会自动解析你。如果你没有定义IE11,它可能无法解析。