IE中的AJAX请求(所有版本)

时间:2012-07-16 08:01:13

标签: javascript ajax internet-explorer

http://kiwilocals.com.au/dev/

您好,这里是横幅下页面中间类别的ajax请求。除了IE的所有版本之外,无处不在。 我检查了开发人员的工具,查询给出了正确的结构,但加载后没有出现任何加载图标。可能是什么原因?谢谢。

function scat(th) {
wait_loading('sub_lst');

if (request = create_request()) {

    request.open("GET", "get_subcat.php?id=" + th + "&site=1", true);
    request.onreadystatechange = function () {
        //alert(request);
        if (this.status == 200) {
            if (this.readyState == 4) {

                var doc3 = document.getElementById('sub_lst');
                //alert(doc3);
                doc3.innerHTML = this.responseText;
                if (!scroll_start) {
                    $('.sub_scroll').jScrollPane({
                        animateScroll: true
                    });
                    $('.hidden_control').show();
                    scroll_start = true;
                }
            }
        }
    }
    request.send(null);
}
}

function create_request() {
var request = false;
try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
    try {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e2) {
        try {
            request = new XMLHttpRequest();
        } catch (e3) {
            request = false;
        }
    }
}
if (!request) {
    alert("Невозможно выполнить Ajax запрос.");
    return false;
} else return request;
}

function wait_loading(el_id) {
document.getElementById(el_id).innerHTML = "<center><img style=\"padding-top: 60px;\" width=\"64\" height=\"64\" src=\"images/loading.gif\"></center>";

}

1 个答案:

答案 0 :(得分:1)

问题在于你在readstatechange事件中使用'this'。

给这一点。

if(request = create_request()) {

    request.open("GET", "get_subcat.php?id="+th+"&site=1", true);
    request.onreadystatechange = function() {

        if(request.status == 200) {
            if( request.readyState == 4 ) {
                var doc3 = document.getElementById('sub_lst');
                doc3.innerHTML=request.responseText;

                if(!scroll_start) {
                    $('.sub_scroll').jScrollPane({animateScroll: true});
                    $('.hidden_control').show();
                    scroll_start=true;
                } 
            }
        }
    }
    request.send(null);
}

但有一个问题......你在整个代码中使用jQuery,除此之外。为什么不使用:

$('#sub_lst').load("get_subcat.php?id="+th+"&site=1", function(){
    if(!scroll_start) {
        $('.sub_scroll').jScrollPane({animateScroll: true});
        $('.hidden_control').show();
        scroll_start=true;
    } 
});