1

快速笔记。我没有使用 jQuery,所以不建议这样做。

当按下具有 onclick="ajaxfunction();" 的按钮时 我收到警告说“AJAX 调用期间出错。请重试”,然后我收到警告说成功,两次:S ... 为什么会发生这种情况?

我不明白为什么会这样,因为它调用错误,然后转到 if 语句的另一部分......

提前致谢!

<script>

    function getXMLObject()  //XML OBJECT
    {
       var xmlHttp = false;
       try {
         xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")  // For Old Microsoft Browsers
       }
       catch (e) {
         try {
           xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")  // For Microsoft IE 6.0+
         }
         catch (e2) {
           xmlHttp = false   // No Browser accepts the XMLHTTP Object then false
         }
       }
       if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
         xmlHttp = new XMLHttpRequest();        //For Mozilla, Opera Browsers
       }
       return xmlHttp;  // Mandatory Statement returning the ajax object created
    }

    var xmlhttp = new getXMLObject();   //xmlhttp holds the ajax object
    var url="insertProduct.php";

    function ajaxFunction() {
      var getdate = new Date();  //Used to prevent caching during ajax call
      if(xmlhttp) {
        var name = document.getElementById("name");
        var code = document.getElementById("code");
        xmlhttp.open("POST",url,true); //calling insertProduct.php using POST method
        xmlhttp.onreadystatechange  = handleServerResponse;
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlhttp.send("name=" + encodeURIComponent(name.value) + "&code=" + encodeURIComponent(code.value)); //Posting to PHP File

      }
    }

    function handleServerResponse() {
       if (xmlhttp.readyState == 4 || xmlhttp.readyState=="complete") {
           alert("Success");
           document.getElementById("message").innerHTML=xmlhttp.responseText; //Update the HTML Form element 
       }
       else {
            alert("Error during AJAX call. Please try again " + xmlhttp.status);
       }
    }
</script>
4

1 回答 1

1

完成任务后可以调用return;

喜欢下面。

function handleServerResponse() {
       if (xmlhttp.readyState == 4 || xmlhttp.readyState=="complete") {
           alert("Success");
           document.getElementById("message").innerHTML=xmlhttp.responseText; 
           return; 
       }
       else {
            alert("Error during AJAX call. Please try again " + xmlhttp.status);
            return;
       }
    }

我希望这对你有帮助。

于 2012-12-28T16:49:08.957 回答