2009-12-21 62 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。