我使用下面的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用于不同的函数(这会是罪魁祸首吗?)
发布于 2009-12-21 11:40:34
假设:
<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“和"submit_js”。我建议不要不必要地混合Javascript和jQuery代码( "getElementById()“事务)。您应该熟悉一下jQuery selectors。例如:
$("#submit_js")将创建一个jQuery对象,其中包含ID为submit_js的所有元素(只能是零个或一个元素)。
发布于 2009-12-21 14:29:01
请记住,您是通过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。
https://stackoverflow.com/questions/1938032
复制相似问题