$ .post没有发布任何内容

我使用以下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。 我用于不同function的只有一个GET(这可能是罪魁祸首吗?)

假设:

   

你要:

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

PHP:

  

您似乎也在代码中混淆了“submit”和“submit_js”。 我建议不要不必要地混合Javascript和jQuery代码(“getElementById()”业务)。 您应该熟悉jQuery选择器 。 例如:

 $("#submit_js") 

将使用ID为submit_js所有元素( 应该只有零个或一个元素)创建一个jQuery对象。

请记住,您是通过AJAX发布的,因此即使您回显字段值,它也不会显示在您的屏幕上,除非您在$ .post回调中监听它。

要检查问题可能是什么,请在没有jQuery的情况下正常提交表单。 如果你的PHP脚本回显字段值,那么PHP脚本正在运行 – 检查你的JavaScript。 如果您在使用print_r()时出现空白或空数组,请确保表单中的字段名称与您在PHP脚本中使用的字段名称相同。

不希望您必须重写代码,但这是我建议的。

 

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。