2009-12-21 70 views
0

我用下面的jQuery要發表評論,以user_submit.php

var submit = document.getElementById("submit_js"); 
    var comment = document.getElementById("comment"); 

    $("#submit").bind('click', function(){ 
     $.post("user_submit.php", { 
      comment: $("#comment").text() 
     }); 
    }); 

的user_submit.php聽這樣的:

$comment = htmlspecialchars($_POST["comment"]); 

我可以在Firebug控制檯看到沒有POST發生。只有一個GET,我使用了不同的功能

+0

您是否對該事件調用了'preventDefault'(http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29)?我假設你的'#submit'是一個實際的提交按鈕 – 2009-12-21 06:38:57

回答

4

假設(可在此是罪魁禍首?):

<input type="text" id="comment"> 
<input type="button" id="submit_js"> 

你想:

$(function() { 
    $("#submit_js").click(function() { 
    $.post("user_submit.php", { 
     comment: $("#comment").val() 
    }); 
    }); 
}); 

PHP:

<?php 
$comment = $_POST['comment']; 
//... 
echo htmlspecialchars($comment); // nothing catches this currently 
?> 

您的代碼似乎也令人困惑,「提交」和「submit_js」。我建議不要混用JavaScript和jQuery代碼(「getElementById()」業務)。你應該熟悉jQuery selectors。例如:

$("#submit_js") 

將創建的所有元素jQuery對象(其僅是零個或一個元件)的submit_js的ID。

+0

現在我可以看到POST。但user_submit.php沒有收到任何東西。我正在使用這裏寫的內容。依然沒有。 – amit 2009-12-21 03:59:42

+0

我在「user_submit.php」中有一個拼寫錯誤,是不是?你的網址是否正確? – cletus 2009-12-21 04:07:52

+0

不,我糾正這一點。和URL是正確的。正如我所提到的,我正在成功地爲另一個GET請求提供服務。 – amit 2009-12-21 04:11:30

0

請記住,您是通過AJAX發佈的,所以即使您要回顯字段值,它也不會顯示在屏幕上,除非您在$ .post回調中監聽它。

要檢查問題可能是什麼,請在沒有jQuery的情況下正常提交表單。如果您的PHP腳本回顯字段值,那麼PHP腳本正在工作 - 請檢查您的JavaScript。如果在使用print_r()時變得空白或爲空數組,則確保表單中的字段名稱與您在PHP腳本中使用的字段名稱相同。

不希望你必須重寫你的代碼,但這是我推薦的。

<form class="comments" method="post" action="user_submit.php"> 
    <input type="text" name="comment" /> 
    <input type="submit" value="Submit" /> 
</form> 

的JavaScript:

$('.comments').submit(function() { 
    var $form = $(this); 

    $.post(
     $form.attr('action'), 
     $form.serialize(), 
     function(data, status) { 
      console.log(data); 
     } 
    ); 

    return false; 
} 

這將提交表單的PHP腳本。在回調函數中,「data」是PHP腳本返回的數據。因此,如果您回顯字段值,Firebug控制檯將顯示該值。

如果用戶的瀏覽器禁用了JavaScript,表單仍然會正確提交。當然,您的PHP腳本必須檢查表單是否通過AJAX提交,以便它可以根據請求方法正確處理。一個簡單的測試方法是檢查X-Requested-With頭。如果它是通過AJAX發送的,則該值將是XMLHttpRequest。