在AJAX调用中首先执行哪些方法?

时间:2013-10-09 14:47:37

标签: javascript ajax methods

我一直在学习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);
                  }
              }


          }

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

1 个答案:

答案 0 :(得分:1)

在代码完成运行后,当控件返回到事件循环时,Javascript只能调用onreadystatechange回调。

因此,在发送请求之前或之后添加处理程序并不重要,只要将其添加到同步执行的同一单元中即可。