簡體   English   中英

未調用Ajax函數

[英]Ajax Function Not Being Called

所以我想做的是使用Java腳本創建警報。 如果此人按OK,它將向處理程序發送一個變量,處理程序將發送電子郵件。 下面的代碼是我所擁有的,但是我在調​​試它時遇到了麻煩。 截至目前,我擁有以下功能:

如果聲明,請單擊“確定”:

    var pressed = confirm("Click okay to email users of video upload or Cancel to keep   adding videos");
        if (pressed == true)
        {
            var variable = 44;
            emailParticipants(variable);
            alert ("email sent");
        }

發送給處理程序的功能:

function emailParticipants(sessionID)
    {

    var ID = sessionID;


       if (window.XMLHttpRequest)
       {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
       }
       else
       {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
       xmlhttp.open("GET","http://www.website.ca/portal/folder/HandleEmail.php?sessID="+ID,true);
       xmlhttp.send();    

  }

處理程序:

$SessID = $_GET['ID'];
<?php
$toEmail = 'someone@hotmail.com';
$toName = "TEST TEST";
<script>alert ("works");</script>
.
.. 
....

處理程序功能的其余部分僅發送電子郵件。 我無法理解錯誤所在。

好吧,您正在通過AJAX調用處理程序。 alert()方法位於處理程序返回的頁面內……但是您對該頁面不做任何事情。 您提出請求而忘記了響應。 瀏覽器不會執行AJAX調用的響應,因此帶有alert的代碼將永遠不會執行。

順便說一句,您**絕不要**應該發送帶有GET請求的電子郵件(或在服務器中進行任何其他更改,但返回信息)。 GET請求可以被緩存甚至預取,從而導致在不請求時發送電子郵件,或者在請求時不發送電子郵件。 我將請求類型更改為POST

如果您想發出alert ,則需要更改客戶端代碼並添加以下代碼:

xmlhttp.open("GET","http://www.website.ca/portal/folder/HandleEmail.php?sessID="+ID,true);
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
         if (xmlhttp.status == 200) {
             alert('works!');
         } else {
             alert('Failed! ' + xmlhttp.statusText);
         }
    }
}
xmlhttp.send();

我認為您對AJAX有點迷茫。 您應該閱讀更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM