我有一个PHP脚本执行插入部分如下(我知道,没有PDO或mysqli,这只是我的个人测试):
<?php
$user = $_POST['user'];
$comments = $_POST['comment'];
$con = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db('localh',$con);
$query = mysql_query("INSERT INTO content (Title, Article)
VALUES('$user', '$comments')");
if(!$query){die(mysql_error());}
mysql_close($con);
?>
如果我在表单操作中使用此脚本,它将正常工作,输入值将添加到数据库中。
以下是表格:
<form>
<p>User: <input type="text" id="user" /></p>
<p>Comment:<input type="text" id="comment" /></p>
<input type="button" id="submit" onClick="insertData();" />
</form>
AJAX部分,位于头标记之间:
function insertData(){
var ajaxRequest = new XMLHttpRequest();
var usr = document.getElementById("user").value;
var cmnt = document.getElementById("comment").value;
ajaxRequest.open("POST", "insert.php", true);
ajaxRequest.send(usr, cmnt);
}
结果将是数据库中的空行。我不知道为什么会这样,我很无能为力。
答案 0 :(得分:2)
实际上,这是我实际建议有人使用jQuery的唯一非常具体的案例之一。
AJAX可能是最模糊的实现功能。每个浏览器都有关于其实现的怪癖。 jQuery可以用来消除那些跨浏览器的不兼容性。
答案 1 :(得分:1)
您实际上并未将变量的密钥发送到脚本:
ajaxRequest.send(usr, cmnt);
因此,您的$_POST
数组不会包含user
也不会包含comment
。
虽然切换到jQuery可能是一个好主意,但您可以发送变量,如:
var vars = encodeURI("user="+usr+"&comment="+cmnt);
ajaxRequest.send(vars);
但是你必须测试它,因为我通常使用jQuery来处理我的ajax请求。
答案 2 :(得分:1)
检查您是否在$_POST
可靠的user
和comments
数据中,只需在您的php文件中添加类似的内容
的print_r($ _ POST);出口();
如果您在服务器端没有它们,请检查ajax
如果可以检查你的mysql查询: