[英]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.