2011-12-01 61 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

感謝您回覆我的問題。我正在爲你投票。這是我能爲你做的最多的事情:-) –