0

我有一个 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 部分,位于 head 标签之间:

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);
}

结果将是数据库中的空行。我不知道为什么会这样,我一无所知。

4

3 回答 3

2

实际上,这是我真正推荐某人使用 jQuery 的唯一非常具体的案例之一。

AJAX 可能是实现最模糊的特性。每个浏览器都有其实现的怪癖。jQuery 可以用来解决那些跨浏览器的不兼容问题。

jQuery$.ajax文档页面

于 2012-11-20T17:54:21.853 回答
1

您实际上并没有将变量的键发送到脚本:

ajaxRequest.send(usr, cmnt);

所以你的$_POST数组不会包含usernor comment

虽然切换到 jQuery 可能是一个好主意,但您可以发送变量,例如:

var vars = encodeURI("user="+usr+"&comment="+cmnt);
ajaxRequest.send(vars);

但是你必须测试一下,因为我通常使用 jQuery 来处理我的 ajax 请求。

于 2012-11-20T18:01:09.090 回答
1

检查您是否收到了$_POST可验证usercomments数据,只需在您的 php 文件中添加类似的内容

print_r($_POST); 出口();

如果您在服务器端没有它们,请检查您的ajax

如果没问题,请检查您的 mysql 查询:

于 2012-11-20T18:03:26.087 回答