Javascript “AJAX错误”;setRequestHeader";没有定义

Javascript “AJAX错误”;setRequestHeader";没有定义,javascript,ajax,Javascript,Ajax,我对代码中的错误有点困惑 function submitArticle() { var postTitle = encodeURIComponent(document.getElementById('postTitle').value); var postDes = encodeURIComponent(document.getElementById('postDes').value); var postCont = encodeURIComponent(documen

我对代码中的错误有点困惑

function submitArticle() { 
   var postTitle = encodeURIComponent(document.getElementById('postTitle').value);
   var postDes   = encodeURIComponent(document.getElementById('postDes').value);
   var postCont  = encodeURIComponent(document.getElementById('postCont').value);   
   var data = "postTitle=" + postTitle + "&postDes=" + postDes + "&postCont=" + postDes;                                     
   var getXML =  function () {
        try {

            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");

              }
            }                          
          }                                
      } 
       open('POST', 'http://localhost/blog/engine/engine.php', true);
       setRequestHeader("Content-type", "application/x-www-form-urlencoded");               
       send(data);                                                                                                              
       getXML.onreadystatechange = function() {
          if(this.readyState === 4) {
              if(this.status ===200) {
                 alert(this.responseText);
              }
              else {
                alert("status" + this.status);
               }
          }
          else {
            alert("readyState" + this.readyState);
          }
      }
   getXML();                                                                                           
   return true;               
}
我正在为此使用onclick事件。我已经检查了URL,并确保在输入变量值时没有犯任何错误。我收到“setRequestHeader未定义”错误以及显示链接“localhost/blog/app/POST”的新窗口

我已经尽可能多地查阅了,我不知道下一步该怎么办。

也。一定有比我为getXML()函数编写代码更好的方法

setRequestHeader
是XmlHttpRequest对象的一种方法


您需要执行
xhr.setRequestHeader(…)

我为我的愚蠢问题感到抱歉。我没有意识到的是XMLHttpRequest有许多方法,其中open、send和setRequestHeader是@Chris Jones所说的方法的一部分。因此,当我使用这些方法时,我需要使用xhr

这是我的最新作品

       function submitArticle() { 
           xhr = new ajaxValue();
           function ajaxValue() {
                try {
                     xhr = new XMLHttpRequest();                         
                  }
                  catch(e) {
                            try {
                              var  xhr = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                    catch(e) {
                                try {
                                   var  xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                }
                                catch(e) {
                                  alert("Your Browser is not Supported");

                                }
                    }                          
                  }
                  return xhr;
             }                                                                         

           var postTitle = document.getElementById('postTitle').value;
           var postDes   = document.getElementById('postDes').value;
           var postCont  = document.getElementById('postCont').value;   
           var data = "postTitle=" + postTitle + "&postDes=" + postDes + "&postCont=" + postDes;                            
           var url = '../engine/engine.php';
           xhr.open('POST', url , true);
           xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");   
           xhr.send(data);                
           xhr.onreadystatechange = function() {
                                       if(this.readyState === 4 ) {
                                                if (this.status ===200) {                     
                                                          alert(this.responseText);
                                                          }
                                         }                 
                                        else {
                                          alert("status " + this.status);
                                          alert("readyState " + this.readyState);
                                              }                                                
                                    }           
           return false;                                                                                                                                                                                                                                         
          }

如果您对JavaScript的了解太少,以至于尝试在不引用实际对象的情况下调用对象方法,那么您最好为我们提供一个像jQuery这样的库,它可以很好地为您处理所有这些内容……与我在其中告诉您的问题完全相同。:)谢谢@epascarello,我现在已经设法让整个事情顺利进行。接受Chris的回答,这里没有任何意义(更不用说接受了)。读者不需要更新的代码转储。作为信息,必须在
xhr.open()之后调用
xhr.setRequestHeader()