Button调用ajax函数多次

时间:2012-12-28 16:05:58

标签: php html ajax forms xmlhttprequest

快速说明。我没有使用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>

1 个答案:

答案 0 :(得分: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;
       }
    }

我希望这会对你有所帮助。