2011-12-01 80 views
-2

我在我的网站更新的邮件系统,我想不通,为什么下面的代码块是不工作:AJAX/PHP问题

function sendReply(id,from,to) 
{ 
    var subject = document.getElementById("subject").innerHTML; 
    var body = document.getElementById("body").innerHTML; 
    var xmlhttp; 
    if (id.length==0) { 
     document.getElementById("userMessagingBackground").innerHTML = ""; 
     return; 
    } 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", "sendOutReply.php?from=" + from + "&to=" + to + "&subject=" + subject + "&body=" + body, true); 
    xmlhttp.send(); 
    document.getElementById("userMessagingBackground").style.display = "none"; 
} 

所以......呃...这有什么不对吗?如果不是......这是PHP部分:

<?php 
    $to = $_GET['to']; 
    $dbc = mysqli_connect(Database Connection Stuff); 
    $username = $_GET['user']; 
    if (!empty($_GET['body'])) { 
     $sub = $_GET['subject']; 
     $body = "Sent by $username:\n---\n" 
      . $_GET['body'] . "\n\n------------------------\n\n" 
      . $receivedMsg; 
     $STM = "INSERT INTO messagingTable 
      (new, sender, receiver, subject, message, sentDate) 
      VALUES ('1', '$username', '$to', 'RE: $subject', '$body', NOW())"; 
     $sendMessage = mysqli_query($dbc, $STM); 

     $findReceiver = "SELECT * FROM usersTable WHERE username = '$to'"; 
     $getTo = mysqli_query($dbc,$findReceiver); 
     $toRow = mysqli_fetch_array($getTo); 

     if ($toRow['emailOnPm'] == 1) { 
      mail($toRow['email'],$sub,$body, "From: AllThemGames.com"); 
     } 
    } 
?> 
+0

当你说它不工作时,你在看什么? –

+0

你在做什么回调? – tafoo85

+0

你在你的网站上使用什么版本的PHP? – DrewCo

回答

1

您的Ajax调用函数缺少回调函数。例如:

xmlHttp.onreadystatechange = function(){ 
    if(this.readyState == 4) 
     //Do you call back 
) 
+0

我绝对需要回拨吗?我真的不需要一个... – bballer13sn

+0

你不需要回调,但它肯定会帮助你评估你的javascript中是否有错误,或者你的PHP脚本中是否有错误。我将添加一个和(使用firebug)在回调中设置断点并检查XMLHttpRequest对象的值。 – tafoo85

+0

完全根据个人喜好提出建议。我建议在你的代码中注入console.log()语句来跟踪它的进度,而不是设置一个断点。 – CBusBus

0

你有

mlhttp.send(); 

应该有

​​

我不知道,这是一个完整的答案,但值得一试...

+0

原来,'x'刚刚被删除,因为我将它添加为代码块。事实上,这很好,我的错误。 – bballer13sn

0

如果你发送请求,你能看到Firebug吗?

如果它正确,问题是在PHP方面:)。

此外,您可能会看到500错误返回。如果是这种情况,请检查您的服务器的错误日志。

接下来,我们需要看到什么不起作用。

是MySQL请求?这是邮件功能吗?使用一些echo陈述来了解更多关于什么是错的和正确的。

顺便说一下,您的代码易受SQL injections影响。请阅读herehere,了解如何保护您自己(如果您想深入PDO,here is a link可以帮助您入门)。

另外,认真地,read this link。基本上,你应该学习如何调试以找出错误的位置。这将帮助你找出你可以变得多么愚蠢(没有冒犯,每个人都可以)),并且也会帮助我们更好地帮助你。

+0

感谢您回复我的问题。我正在为你投票。这是我能为你做的最多的事情:-) –