返回奇怪的POST数据垃圾

时间:2011-08-31 03:19:19

标签: php mysql ajax post

我正在使用post方法为站点编写一个相当基本的注释函数,将输入值传递给执行相关mysql查询的php文件。

$ .ajax部分如下:

// AJAX URL ENCODING
$("#add").click(function() {  
        // POST COMMENT FORM VALUES
        var ajaxOpts = {  
        type: "post",  
        url: "includes/addComment.php",  
        data: "&author=" + $("#author").find("input").val() + "&email=" + $("#email").find("input").val() + "&comment=" + $("#leaveComment").find("textarea").val() + "&parent=<?php echo $vid_id; ?>",  
        success: function(data) {  

            // IMMEDIATE DISPLAY
            // Not relevant to this problem.

            // CLEAR TEXTAREA FOR NEXT COMMENT
            $("textarea").val('');  
        } 


        };  

    $.ajax(ajaxOpts);  
});

这传递给addcomment.php:

require('connection.php');    

//get POST data  
$name = mysql_real_escape_string($_POST["author"]); 
$email = strtolower(md5(trim(mysql_real_escape_string($_POST["email"])))); 
$comment = mysql_real_escape_string($_POST["comment"]);
$time = Date ('c');
$parent = trim(mysql_real_escape_string($_POST["parent"]));


//add new comment to database  
mysql_query("INSERT INTO comments VALUES(' $name ',' $email ',' $comment ', ' $time ', ' $parent ')"); 

除了mysql_query最终不会将任何值插入到我的数据库中之外,一切正常。经过一番挖掘,我发现了这个:

screen grab

所以我假设我的查询没有继续进行,因为垃圾(?)数据的':'位将所有内容都抛弃了?

我想弄清楚这个错误的':'来自哪里,有人有什么想法吗?

P.S-对于这个问题的长度抱歉,我试图尽可能地缩小可能的罪魁祸首。

4 个答案:

答案 0 :(得分:3)

您不必自己进行URI编码。阅读jquery的文档,要发送的'data'可以是map / json。

http://api.jquery.com/jQuery.post/

变化

data: "&author=" + $("#author").find("input").val() + "&email=" + $("#email").find("input").val() + "&comment=" + $("#leaveComment").find("textarea").val() + "&parent=<?php echo $vid_id; ?>"

{ author: 'something',email:'test' }

或更专业

$("#testform").serialize() //here #("#testform") stands for a '<form>' tag

尽量不要使问题复杂化,从一些简单的函数开始,使用更多的echo()和alert()进行调试。

答案 1 :(得分:2)

如果你删除&amp;来自&amp; author?

的前面

通常第一个数据字段没有&amp;

data: "&author=" 

正如其他人所说,这将是一个受欢迎的补充

or die (mysql_error()) 

通常很好的做法是在插入上命名数据库列 否则,如果您改变表结构,则可能会破坏insert语句

insert into (colname1, colname2) values ('value1', 'value2')

答案 2 :(得分:0)

你可以print_r($ _ POST)来查看冒号是否真的存在。 其次,在调试时抛出

并不会有什么坏处
or die (mysql_error()) 

在您的查询结束时。 没有这两个,就很难调试。

答案 3 :(得分:0)

2件事:

  • ajaxOpts变量超出范围,您将遇到错误(未定义ajaxOpts)
  • 在你的例子中,你错过了});最后,在检查php脚本是否正常工作之前,你应该检查你的JS验证。如果您有JS错误,则不会调用ajax调用。