【问题标题】:XMLHttpRequest onreadystatechange called multiple times多次调用 XMLHttpRequest onreadystatechange
【发布时间】:2012-12-27 16:32:42
【问题描述】:

我正在用 php 实现登录系统并使用 ajax 请求。

这是我的要求

hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

hr.onreadystatechange = function() {

    var return_data = hr.responseText;
    if(hr.readyState == 4 && hr.status == 200) {
        alert('is logged');
    }else if (hr.status == 400){
        alert('is not logged');
    }
}


hr.send(vars); // Actually execute the request

但是当我得到响应时,浏览器会启动各种警报。谁能帮忙解决这个问题?

【问题讨论】:

  • 各种提醒 - 你能描述得更详细些吗?
  • 它不止一次地显示两个警报消息。基本上每次我调用 php 文件来登录用户或者我让他登录或者我注销他。就像页面被多次调用
  • 我正在检查并多次显示这些消息,因为它不止一次地发布帖子。但我不知道为什么。

标签: php ajax


【解决方案1】:

是的,它应该正常工作........onreadystatechange 可能在一个请求中被调用多次.. 为了提醒这两个条件,只要请求正常,即 200

它提醒:

'未记录'

当它得到 readystate=4 以及 Ok signal 时,它会发出警报:

已登录。

然后

readyState =4 --> 请求完成,响应就绪

status= 200 --> 表示请求被服务器成功处理。

所以,第二次弹出警报,因为至少您的请求已成功处理。 欲了解更多信息: https://www.w3schools.com/js/js_ajax_http_response.asp

这里是:


     xhrobj.onreadystatechange = function()
    {
      if (xhrobj.readyState == 4 && xhrobj.status == 200)
      {
        if (xhrobj.responseText)
         {
                //put your code here 
           document.write(xhrobj.responseText);
          }
       }
     };

【讨论】:

  • 我不知道......但我仍然有对 readyState 和 status 的验证,它应该只发生一次(readyState == 4 && status == 200)对吗?
  • @TaLhaKhan 谢谢我有一个类似的问题,我在阅读你的回答后不确定我能理解它。我的问题。单击一个按钮会生成多个请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多