2014-03-12 82 views
0

所以我想要做的是,使用Java腳本創建一個警報。如果此人按下OK 它將向處理程序發送一個變量,處理程序將發送一封電子郵件。下面的代碼就是我的,但我在調試時遇到了麻煩。截至目前我有這樣的:Ajax函數不被稱爲

if語句,好嗎點擊:

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 = '[email protected]'; 
$toName = "TEST TEST"; 
<script>alert ("works");</script> 
. 
.. 
.... 

休息處理函數只是發送電子郵件。我無法捕捉到錯誤所在。

+0

我看不出爲什麼處理函數會發送電子郵件。你沒有代碼可以做到這一點,並且當你點擊''因爲那不是PHP。 – Quentin

+0

你也沒有說出你期望發生的事情。 – Quentin

回答

0

那麼,你是通過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。您應該閱讀more

+0

是的,我很新,並感謝你的鏈接,我將定義閱讀它。 – CFleming