none
修改 window.location.href ,为什么不触发 onreadystatechange 绑定的事件? RRS feed

  • 问题

  • 在点击一个按钮时 ,修改 window.location.href 去输出一个文件,但是却没有再触发onreadystatechange 绑定的那个事件了。怎么解决这个问题?

    开心了就笑,不开心了就过会儿再笑

    2013年12月26日 7:00

全部回复

  • 你好,

    可能我没理解您意思。我们一般用onreadystatechange 事件是在Ajax异步刷新局部页面用的,向下面的代码,把反回来的数据填充到“txtHint” 里面:

    function showHint(str)
     {
     if (str.length==0)
       { 
       document.getElementById("txtHint").innerHTML="";
       return;
       }
     var xmlhttp=new XMLHttpRequest();
     xmlhttp.onreadystatechange=function()
       {
       if (xmlhttp.readyState==4 && xmlhttp.status==200)
         {
         document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
         }
       }
     xmlhttp.open("GET","gethint.asp?q="+str,true);
     xmlhttp.send();
     }

    但是,window.location.href用来请求一个新的页面的。如果还是不能工作,你可以尝试打个断点,debug一下,看看ajax发送请求没有,或者反回来的readyState and status是否正确。另外你可以考虑用jquery ajax,非常好用。详细信息你可以参考这里:

    http://www.w3schools.com/jquery/jquery_ajax_get_post.asp

    http://www.mikesdotnetting.com/Article/220/Posting-Data-With-jQuery-AJAX-In-ASP.NET-Razor-Web-Pages

    Hope it can help you.


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place. <br/> Click <a href="http://support.microsoft.com/common/survey.aspx?showpage=1&scid=sw%3Ben%3B3559&theme=tech"> HERE</a> to participate the survey.

    2013年12月27日 2:18
  • 你好,谢谢你的分享。我想你的这种方法可能更利于我解决这个问题。

    我修改 window.location.href 是指向了另一个网页,而这个网页在接到请求后会输出一个文件以供下载,而使用 onreadystatechange 是为了跟踪文件下载状态。当然最好的效果是能以下载进度的方式展示在前台。

    不过据说 Jquery ajax 不能用在文件下载上


    开心了就笑,不开心了就过会儿再笑


    • 已编辑 NewJoin 2013年12月30日 2:24
    2013年12月30日 2:21