IE中的第二个Ajax请求问题

时间:2011-07-28 11:22:31

标签: php javascript

    var xmlhttp;

    if (window.XMLHttpRequest)
    {   // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {   // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }



    xmlhttp.open("GET" , "rajax_calls.php?"+form_data , true);
    xmlhttp.send();

    // alert(xmlhttp.responseText);

    xmlhttp.onreadystatechange=function()
    {
        if ( xmlhttp.readyState==4 && xmlhttp.status==200 )
            sel_2.innerHTML=xmlhttp.responseText;    
    }

您好, 我在JS中编写这个代码,而且我还发送了一个类似于上面的ajax请求,但是第二个请求似乎没有在IE中发送响应,而它在firefox中运行正常。另外,提一下我正在为这两个请求使用单独的对象。 第一个响应在IE,firefox中都正常。我正在使用IE7。

3 个答案:

答案 0 :(得分:0)

您需要为每个请求创建对象

function req() {
    var xmlhttp;

    if (window.XMLHttpRequest)
    {   // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {   // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlhttp;
}

答案 1 :(得分:0)

Ajax完整处理当且仅当它获得此组合状态时

xmlhttp.readyState==4 && xmlhttp.status==200

你可以检查但是发出警报

alert(xmlhttp.readyState +'  '+ xmlhttp.status);

可能会帮助你..

即使我认为代码应该像

xmlhttp.onreadystatechange=function()
{
    if ( xmlhttp.readyState==4 && xmlhttp.status==200 )
        sel_2.innerHTML=xmlhttp.responseText;    
}
xmlhttp.open("GET" , "rajax_calls.php?"+form_data , true);
xmlhttp.send();

答案 2 :(得分:0)

而是使用Prototype或jQuery,那么你不必担心这样的事情,即使理解底层代码也是如此。 原型:

new Ajax.Request('rajax_calls.php', {
    parameters: formdata,
    method: 'get',
    onComplete: function(t) {
        //alert(t.responseText.strip());
        // you can do another request here if you want...
        sel_2.innerHTML=t.responseText.strip(); 
    }
});