日期:2014-05-16  浏览次数:20699 次

一个简单的AJAX问题,主要是在IE下无效,但在FF和CHROME下有效
上代码:

function checkin(strvalue){
var handler=create_ajax();
url="select.php?search="+strvalue;//select.php就是一句代码echo "ok";
handler.open("get",url,true);
handler.onreadystatechange=function(){
if(handler.status==200){//在IE下总说这一行有未指明的错误,不懂什么意思
if(handler.readyState==4){
if(handler.responseText){
var rs=[1,2,3,4,5,6];
var obj=document.getElementsByName("sel");
for(var n=0;n<6;n++){
obj[n].innerHTML=rs[n];
}
}
}
}
}
handler.send(null);
}
function create_ajax(){
var request=null;
try{
request=new XMLHttpRequest();
if(request.overrideMiMeType){
request.overrideMiMeType("text/xml");
}
}catch(e){
try{
request=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return request;
}



在FF和CHROME下,出发checkin()函数后,6个NAME为SEL的DIV都赋上值了,但是唯独IE下面不行,不知道是哪里出问题了。
如果以上代码还看不出问题,我可以继续贴其它代码。希望能帮我解决一下,谢谢。

------解决方案--------------------
    function checkin(strvalue) {
        var handler = create_ajax();
        url = "select.php?search=" + strvalue; //select.php就是一句代码echo "ok";
        handler.open("get", url, true);
        handler.onreadystatechange = function () {
            //if (handler.status == 200) {//在IE下总说这一行有未指明的错误,不懂什么意思,IE获取status要在状态为4之后,要不就报错了
            if (handler.readyState == 4) {
                if (handler.status == 200) {///放这里来
                    if (handler.responseText) {
                        var rs = [1, 2, 3, 4, 5, 6];
                        var obj = document.getElementsByName("sel");
                        for (var n = 0; n < 6; n++) {
                            obj[n].innerHTML = rs[n];
                        }
                    }
                }
            }