我正在使用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最终不会将任何值插入到我的数据库中之外,一切正常。经过一番挖掘,我发现了这个:
所以我假设我的查询没有继续进行,因为垃圾(?)数据的':'位将所有内容都抛弃了?
我想弄清楚这个错误的':'来自哪里,有人有什么想法吗?
P.S-对于这个问题的长度抱歉,我试图尽可能地缩小可能的罪魁祸首。答案 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件事: