-3

我对我在代码中做错了什么有点困惑

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 is not defined”错误以及显示链接“localhost/blog/app/POST”的新窗口

我已经尽可能多地抬头看了看,但我不知道下一步该做什么。
还。必须有比我为 getXML() 函数所做的更好的方法来编写代码。

4

2 回答 2

5

setRequestHeader是 XmlHttpRequest 对象的一个​​方法。在这里阅读它。

你需要做xhr.setRequestHeader(...)

于 2013-10-09T16:41:14.533 回答
0

我为我相当愚蠢的问题感到抱歉。我没有意识到 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;                                                                                                                                                                                                                                         
          }
于 2013-10-10T06:07:53.987 回答