我正在使用以下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 :(得分: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”和“submit_js”。我建议不要不必要地混合Javascript和jQuery代码(“getElementById()”业务)。您应该熟悉jQuery selectors。例如:
$("#submit_js")
将创建一个jQuery对象,其中包含ID为submit_js
的所有元素(应仅为零或一个元素)。
答案 1 :(得分: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。