您好,我想问一下如何在Javascript发布后从HTML中打印$ POST值?
以下是我的HTML提交表单:
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="./comments.js"></script>
</head>
<div id="addCommentContainer">
<form class="add-comment-form" id="addCommentForm3" method="post" action="">
<input type="hidden" value="3" name="comentonpost" id="comentonpost" />
<textarea class="commentinput" name="body" id="body" cols="20" rows="5"></textarea>
<input type="button" class="add-comment-submit" value="Submit" />
</form>
</div>
<div id="addCommentContainer">
<form class="add-comment-form" id="addCommentForm3" method="post" action="">
<input type="hidden" value="3" name="comentonpost" id="comentonpost" />
<textarea class="commentinput" name="body" id="body" cols="20" rows="5"></textarea>
<input type="button" class="add-comment-submit" value="Submit" />
</form>
</div>
这是我的Javascript:
$(document).ready(function () {
$(".add-comment-submit").on("click", function (e) {
e.preventDefault();
var submit = $(this);
if (submit.hasClass("working")) return false;
submit.addClass("working");
submit.val("Working...");
$.post('submit.php',$(this).serialize(),function(msg){
submit.removeClass("working");
submit.val("Submit");
$("<div></div>").html(msg).fadeIn("slow").insertBefore(submit.parent($(".addCommentContainer"))).slideDown();
});
});
});
这是我的submit.php,提交后打印“Hello World”:
<?PHP
$message = 'Hello World';
echo $message;
?>
我不知道为什么,但似乎它没有在submit.php上发布信息,或者我在某处出错了,因为当我在submit.php中尝试这个时:
<?PHP
$message = $_POST["body"];
echo $message;
?>
它不会打印名称为“body”的文本区域中键入的内容。我如何打印在正文输入文本区域中写入的内容?
提前谢谢!
答案 0 :(得分:0)
您在触发器内使用this
,但触发器位于按钮上,而不是表单上,因此this
引用该按钮。这也意味着您要序列化按钮而不是表单。请尝试此POST调用:
$.post('submit.php',$(this).parent().serialize(), ...
修改强>
顺便说一句,通常最好将触发器添加到表单中,例如正如here所述。