无法在php文件中接收POST数据

时间:2009-12-21 04:35:23

标签: php javascript jquery ajax

更新

这是警报的屏幕截图:

alt text

我使用以下JQuery函数将数据成功发送到user_submit.php文件,只是php文件无法接收数据。

    $(function() {
      $("#submit_js").click(function() {
        $.post("user_submit.php", {
          comment: $("#comment").val()
        });
      });
    });
完成Firebug consoloe后显示:

<html>
<body>

Your vote was successfully registered!any text but this
</body>
</html>

我在这里粘贴整个user_submit.php文件:

  <html>
<body>

<?php

$vote = $_REQUEST['vote'];
$aid = $vote;


//$comment = $_REQUEST['#comment'];
//$comment = print_r($_POST);
$comment = htmlspecialchars($_POST["comment"]);
//$comment = $_POST['comment'];
//echo htmlspecialchars($comment);
//$comment = $_POST['comment'];
//echo $comment;

    // include configuration file
    include('config.php');

    // open database connection
    $connection = mysql_connect($host, $user, $pass) or die('ERROR: Unable to connect!');

    // select database
    mysql_select_db($db) or die('ERROR: Unable to select database!');

    // update vote counter
    $query = "UPDATE answers SET acount = acount + 1 WHERE aid = $vote";
    $result = mysql_query($query);
    $cadd = "INSERT INTO comments (comment,aid) VALUES ('$comment', '$aid')";
    mysql_query($cadd);

    // close connection
    mysql_close($connection);

    // print success message    
    echo 'Your vote was successfully registered!';
    echo $comment;
    //print_r(array_count_value($comment));

?>


</body>
</html>

请帮帮我。我已经坚持了几个小时了。

**编辑:按要求提交提交按钮的HTML **

<div id="greetings">
                    You are voting out <b style="color: #00b0de;" id=roadiename></b>. Care to explain why?<br/><br/>
                    <textarea name="textarea" id="comment" cols="38" rows="7">textarea</textarea><br>
                    <a href="#" id="submit_js"><img src="images/submit.gif" style="border: none; float:right; padding-top: 10px;padding-right: 10px;"/></a>
                </div>

2 个答案:

答案 0 :(得分:3)

尝试:

$("#submit_js").click(function() {
  $.post("user_submit.php", {comment: $("#comment").val()}, function(data){
      alert(data);
      //this is the function where you would handle the returned text/html/json 
      //whatever that you're php script returns. The data is what you're seeing 
      //inside firebug.
  });
});

以下是$.post

的文档

修改

问题是你期望PHP处理它正在做的回声,但是因为它是一个AJAX请求,所以javascript需要对服务器发送给它的东西做些什么。你的javascript里面没有任何处理程序。 PHP正在返回你告诉它的值,并且浏览器正在获取它,它只是没有用它做任何事情。

对于数据库,我会确保你实际上建立了与db的连接,并且你正在使用的变量中包含了一些东西。您也没有向POST中的脚本发送任何$_REQUEST['vote']值,而且它不在您的网址中,因此这就是第一个查询未更新的原因

答案 1 :(得分:1)

修改

好的屏幕截图意味着所有内容都正确地提交到您的php页面。 那么我们建议问题就在于你的SQL。由于投票SQL似乎工作正常,其本地化以插入您尝试执行。

如果可以,可以为“评论”表发布sql架构。

同样在你做这个的时候你试过用一些测试数据直接从命令行或者一个gui客户端到sql服务器运行相同的查询?

例如来自命令行: mysql -u $ USER -p $ DATABASE INSERT INTO评论(评论,援助)VALUES('我有话要说!',$ AID);

$USER是您的用户名,$DATABASE是您的dbname ...当然,系统会提示您输入用户的密码。

现在我不确定你的架构是什么样的,所以如果aid是自动增量你不应该提供一个值,如果它的pk是$AID任意但是唯一的(确保它适合于列类型 - 即.int,text,varchar等。)

回发您的架构以及测试查询为您提供的任何结果。

修改

好的,我希望你这样做,然后用输出修改你的问题:

使用此代码进行提交(假设#comment仍然是textarea的id:

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

将其放入user_submit.php并注明其他所有内容:

print "Request Data is:\n";
print_r($_REQUEST);
print "\n\nPost data is:\n";
print_r($_POST);

回发您在弹出的警告窗口中看到的内容。

修改

  

我发布了更新的   user_submit.php。现在甚至更新   ajax中的文字。它仍然无法   打印评论 - amit

我想我可能知道它是什么......究竟什么类型的元素是#comment? 您可以在提交页面上发布相关的HTML吗?

修改

我觉得你对ajax的运作方式感到困惑。您假设它的工作原理就像您将表单提交到普通的php页面一样,然后该页面呈现给浏览器。这不是发生的事情。相反,你发布到一个页面,你得到一个http响应,而不是呈现对浏览器的响应,你得到它作为一个javascript变量。然后你必须对该变量做一些事情 - 比如将它添加到页面某处。问题是你没有对你回来的反应做过任何事情。

好的......

  

“@BranTheMan:那为什么不是呢   回应文本?为什么不是呢   向DB添加任何内容? - amit“

它没有回应你页面中的任何一个因为你没有告诉它。你在firebug控制台中看到的是响应体。这不会通过$.post进入您的网页。它jsut拨打电话并给你回复。如果你想在当前页面中回显它,那么你需要告诉它这样做。

例如上面列出的内容:

$("#submit_js").click(function() {
  $.post(
      "user_submit.php", 
      {comment: $("#comment").val()}, 
      function(data){
         $('#submit_js').append($('body', data).html());
      });
});

至于你的SQL我不知道为什么它没有正确添加...它看起来很好。你检查过你的日志是否有任何sql错误?可能希望通过一些错误检查来自查询的返回。