首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$.post not POSTing anything

$.post not POSTing anything
EN

Stack Overflow用户
提问于 2009-12-21 11:36:23
回答 2查看 511关注 0票数 0

我使用下面的jquery在user_submit.php上发表评论

代码语言:javascript
复制
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的监听方式如下:

代码语言:javascript
复制
$comment = htmlspecialchars($_POST["comment"]);

我可以在Firebug控制台中看到没有POST发生。只有一个GET用于不同的函数(这会是罪魁祸首吗?)

EN

回答 2

Stack Overflow用户

发布于 2009-12-21 11:40:34

假设:

代码语言:javascript
复制
<input type="text" id="comment">
<input type="button" id="submit_js">

您需要:

代码语言:javascript
复制
$(function() {
  $("#submit_js").click(function() {
    $.post("user_submit.php", {
      comment: $("#comment").val()
    });
  });
});

PHP:

代码语言:javascript
复制
<?php
$comment = $_POST['comment'];
//...
echo htmlspecialchars($comment); // nothing catches this currently
?>

您似乎还在代码中混淆了"submit“和"submit_js”。我建议不要不必要地混合Javascript和jQuery代码( "getElementById()“事务)。您应该熟悉一下jQuery selectors。例如:

代码语言:javascript
复制
$("#submit_js")

将创建一个jQuery对象,其中包含ID为submit_js的所有元素(只能是零个或一个元素)。

票数 4
EN

Stack Overflow用户

发布于 2009-12-21 14:29:01

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

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

我不希望你不得不重写你的代码,但是我推荐你这样做。

代码语言:javascript
复制
<form class="comments" method="post" action="user_submit.php">
    <input type="text" name="comment" />
    <input type="submit" value="Submit" />
</form>

JavaScript:

代码语言: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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1938032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档