IE8中的Ajax怪异行为

时间:2013-12-16 18:35:12

标签: javascript jquery ajax internet-explorer-8

以下是我用来获取更多评论的代码:

function showMoreReviews(str) {
    var counter = Number($('#counter').val());
    var xmlhttp;
    if (str == "") {
        document.getElementById("reviews").innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    counter = counter + 10;
    $('#counter').attr({ value: counter });

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            //document.getElementById("reviews").innerHTML = xmlhttp.responseText;
            $("#reviews").append("<div id='rnum" + counter + "'>" + xmlhttp.responseText + "</div>");
            $("#rnum" + counter).hide().fadeIn(800);
        }
    }

    console.log(str);
    console.log(counter);
    xmlhttp.open("GET", "/MoreReviewsAjax.asp?ml=" + str + "&c=" + counter, true);
    xmlhttp.send();
}

它在除IE8之外的所有浏览器中都可以正常工作。现在这里有一些奇怪的东西 - 如果在IE8中,代码将工作,我会去开发工具并开始调试脚本。否则它不起作用。

PS我正在使用虚拟PC和Windows XP w / IE8进行IE8测试。

1 个答案:

答案 0 :(得分:4)

您的console.log()电话是问题所在。

您可以在系统中添加便宜的“polyfill”:

if (!('console' in window)) {
  window.console = {
    log: function() {},
    dir: function() {},
    // whatever other console functions you use
  };
}

这些虚拟函数不会做任何事情,但它们会让IE失去理智。