没有调用Ajax函数

时间:2014-03-12 15:14:45

标签: javascript php html ajax

所以我要做的是,使用java脚本创建一个警报。如果这个人按下OK 它会将一个变量发送给处理程序,处理程序将发送一封电子邮件。我有以下代码,但我在调试时遇到问题。截至目前,我有这个:

IF声明,点击OKAY:

    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");
        }

对HANDLER的看法:

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();    

  }

HANDLER:

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

处理程序的其余部分只是发送电子邮件。我无法抓住错误的地方。

1 个答案:

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