+ -
当前位置:首页 → 问答吧 → 进来看看,谷狗浏览器下ajax的一些问题

进来看看,谷狗浏览器下ajax的一些问题

时间:2011-08-16

来源:互联网

RT,附上代码先
JScript code

function login_step(step)
 {
     alert(step);
    if(window.XMLHttpRequest)
    { 
        var xmlReq = new XMLHttpRequest(); 
        alert(1);
    }
    else if(window.ActiveXObject) 
    { 
        var xmlReq = new ActiveXObject('Microsoft.XMLHTTP'); 
        alert(2);
    }
    alert(2.5);
    var URL="login_step.php?step="+step+"&pid="+pid+"&s_time="+s_time+"&id_lonstep="+id_lonstep+"&falshversion="+falshversion+"&sid="+new Date().getTime();
    alert(URL);
    xmlReq.onreadystatechange = function()
    { 
        alert(xmlReq.status);
        if(xmlReq.readyState == 4)
        { 
            if(xmlReq.status==200)
            {
            }
            else
            {
                alert(URL);
                alert('动态页2面出错\n\n'+xmlReq.responseText+step);//如果状态不是200,输出错误看看

            }
        } 
    } 
        
    xmlReq.open("GET", URL, true);             
    xmlReq.send(null);     
    return false; 
 }

window.onunload=function()
    {
         login_step("close");
    }



谷狗浏览器下刷新的时候,会直接运行到Login_step这个函数的xmlReq.onreadystatechange 的这一步,也就是说前面的alert(1)等都不会执行,直接报动态页面出错了。打印alert(xmlReq.status)为0.在IE和FF都正常,请问是什么原因?该如何修改!
在线等解答

作者: hxm19881010   发布时间: 2011-08-16

你URL弄成最短的“login_step.php”看能不能请求到。

另外确定下是否跨域了。

作者: KongHuLu   发布时间: 2011-08-16

没有跨域。IE和FF下均正常~!
改成啥都不行。上面一截我打了很多输出,根本不执行。。

作者: hxm19881010   发布时间: 2011-08-16

引用 2 楼 hxm19881010 的回复:
没有跨域。IE和FF下均正常~!
改成啥都不行。上面一截我打了很多输出,根本不执行。。


JScript code
function login_step(step)
 {
     var xmlReq = null;
     alert(step);
    if(window.XMLHttpRequest)
    { 
        xmlReq = new XMLHttpRequest(); 
        alert(1);
    }
    else if(window.ActiveXObject) 
    { 
        xmlReq = new ActiveXObject('Microsoft.XMLHTTP'); 
        alert(2);
    }
    alert(2.5);
    var URL="login_step.php?step="+step+"&pid="+pid+"&s_time="+s_time+"&id_lonstep="+id_lonstep+"&falshversion="+falshversion+"&sid="+new Date().getTime();
    alert(URL);
    xmlReq.onreadystatechange = function()
    { 
        alert(xmlReq.status);
        if(xmlReq.readyState == 4)
        { 
            if(xmlReq.status==200)
            {
            }
            else
            {
                alert(URL);
                alert('动态页2面出错\n\n'+xmlReq.responseText+step);//如果状态不是200,输出错误看看

            }
        } 
    } 
        
    xmlReq.open("GET", URL, true);             
    xmlReq.send(null);     
    return false; 
 }

window.onunload=function()
    {
         login_step("close");
    }

作者: MuBeiBei   发布时间: 2011-08-16

不行啊。。。汗!还是直接执行到下面xmlReq.onreadystatechange 这里了!!
为什么?

作者: hxm19881010   发布时间: 2011-08-16

ajax是异步的,有可能没执行完onreadystatechange的4个状态xhr对象都被卸载了。

改成同步的
JScript code
xmlReq.open("GET", URL, false);

作者: showbo   发布时间: 2011-08-16