【问题标题】:Which methods are executed first in an AJAX call?在 AJAX 调用中首先执行哪些方法?
【发布时间】:2013-10-17 00:10:06
【问题描述】:

我一直在学习 AJAX,但我对 AJAX 调用中的方法执行的顺序有点困惑。我见过太多变种。例如

                function submitArticle() {                  

                try {
              //alert("yaay");
                    xhr = new XMLHttpRequest();
                  }
                  catch(e) {
                    try {
                      xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch(e) {
                      try {
                          xhr = new ActiveXObject("Msxml2.XMLHTTP");
                      }
                      catch(e) {
                        alert("Your Browser is not Supported");
                        return false;
                      }
                    }    

                  }
              var parameters = "postTitle=" + postTitle "&postDes=" + postDes + "&postCont=" + postDes;    
              xhr.open('POST', '/engine/engine.php', true);      
              xhr.send(parameters);                                  
              xhr.onreadystatechange = function() {
                  if(this.readyState === 4) {
                      if(this.status ===200) {
                         alert(this.responseText);
                      }
                      else {
                        alert("status" + this.status);
                       }
                  }
                  else {
                    alert("readyState" + this.readyState);
                  }
              }


          }

我的问题是,我看到代码中 opensend 方法放置在非常不同的位置,例如在评估 readyState 值之后。这是正确的方法。我在不同的网站上查找过,我看到的只是 jquery 教程,没有一个解释了代码的执行顺序。对不起,如果这是一个非常愚蠢的问题或者我的代码是错误的。

【问题讨论】:

  • 该代码不正确。什么是 open()send()。它缺少xhr.
  • 谢谢,我将对此进行更改。

标签: javascript ajax methods


【解决方案1】:

只有在代码运行完毕后,控制权返回事件循环时,Javascript 才能调用 onreadystatechange 回调。

因此,无论是在发送请求之前还是之后添加处理程序,只要在同步执行的同一单元中添加即可。

【讨论】:

  • 要详细说明 SLaks 的意思,您实际上并没有在代码中执行 ajax 调用。您正在设置 ajax 调用。如果您同步进行调用,它将在Send() 上发生。但如果它是异步的(这是默认设置),它将由浏览器在事件循环中执行,正如 SLaks 所解释的那样。
  • 非常感谢大家,我现在明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
相关资源
最近更新 更多