【问题标题】:AJAX and PHP; not passing the variables or not working?AJAX 和 PHP;不传递变量或不工作?
【发布时间】:2014-04-27 04:20:28
【问题描述】:

我正在为学期项目应用程序制作管理界面。

我们最后的职责是制作一个管理页面。我已经设置了管理员应该有权访问的所有内容(更新用户信息、删除用户、重置统计信息等),但最重要的一项除外:创建新用户。

当我输入数据以创建用户时,数据库中没有显示任何新内容。使用标准查询(没有变量,您将在下面看到)尝试过它,但仍然没有任何结果让我相信它根本没有访问变量。

我的 Javascript AJAX:

 function createNewUser()
 {
    if (confirm("Are you sure you wish to create this user?") == true)
    {
    createNewUserAJAX();
    }
 }



 function createNewUserAJAX()
 {
      var fName = document.getElementById('ADDFirstName').value;
  var lName = document.getElementById('ADDLastName').value;
  var user = document.getElementById('ADDUserName').value;
  var password = document.getElementById('ADDPassword').value;
  var password2 = document.getElementById('ADDPassword2').value;
  var slateID = document.getElementById('ADDSlate').value;
  var keeperID = document.getElementById('ADDKeeper').value;

      xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function()
  {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
          {
            alert(user+" created successfully!");
            toggleCreateUserInterface();
       }
   }

   if (password == password2)
   {
           xmlhttp.open("GET","AddUserAJAX.php?uname="+user+"&pwd="+password+"&slate="+slateID+"&keeper="+keeperID+"&fName="+fName+"&lName="+lName, true);
    xmlhttp.send();
}
else
{
    alert("Passwords must match");
}
 }

我的 ADDUserAJAX.php 页面上的代码:

<?php
$userName = mysql_real_escape_string($_GET['uname']);
$pw = mysql_real_escape_string($_GET['pwd']);
$slateID = mysql__real_escape_string($_GET['slate']);
$keeperID = mysql_real_escape_string($_GET['keeper']);
$fName = mysql_real_escape_string($_GET['fName']);
$lName = mysql_real_escape_string($_GET['lName']);

mysql_connect('127.0.0.1', 'root', '');
@mysql_select_db('slatekeeperdatabase') or die("Unable to select database");

$lastUserQuery = mysql_query("select max(userID) from users;");
$lastUserID = mysql_result($lastUserQuery,0);
$newUserID = $lastUserID+1;

$lastStatsQuery = mysql_query("select max(statsID) from stats;");
$lastStatsID = mysql_result($lastStatsQuery,0);
$newStatsID = $lastStatsID+1;


//$query= "INSERT INTO users VALUES (".$newUserID.", ".$fName.", ".$lName.", ".$pw.", ".$userName.", '', 1, 1000, 100, ".$slateID.", ".$keeperID.", ".$newStatsID.", 0)";
$query2 = "insert into users values (9, 'James','Lom', 'red','jlom4', '', 1, 1000, 100, 1, 1, 1, 0 );";
mysql_query($query2);




 mysql_close();
 ?>

$query 变量是我试图通过的。 $query2 只是测试查询以检查它是否完全通过(它不是)

非常感谢任何帮助。这太奇怪了,因为我以前使用过测试数据(从来没有使用过我真正想要通过的东西)。也许我把不正确的语法放在了我找不到的地方......(哦,POST将在一切正常后使用。安全性不是我们目前最关心的问题。)

【问题讨论】:

  • 您是否使用浏览器测试了ADDuserAJAX.php
  • 我更新了我的答案,你可以检查一下
  • @M.chaudhry 您是否尝试过在 JavaScript 中使用 encodeURIcomponent() 来正确生成 URL? var fName = encodeURIcomponent(document.getElementById('ADDFirstName').value); 等等?我认为 JavaScript 生成的 URL 有问题,但我不能确定。

标签: javascript php sql ajax variables


【解决方案1】:

我认为您在建立 mysql 连接之前使用 mysql_real_escape_string。如果没有连接,mysql_real_escape_string 不会做任何事情。

【讨论】:

  • 没注意到,我现在试试。
【解决方案2】:

您没有提供要插入的查询字段

$query2 = "insert into users (id, Name etc) values (9, 'James','Lom', 'red','jlom4', '', 1, 1000, 100, 1, 1, 1, 0 );";

我注意到你的 $query2 中的"". 删除了这个我想我也可能是一个错误,第二次删除; 中的)

要调试回显您的$query2,请查看缺少的内容,并尝试直接在数据库 SQL 中运行您的查询

【讨论】:

  • 以前做过,但我又试了一次,还是没有:(。不过,谢谢。
  • 你必须这样做才能插入开始调试 Echo 你的 $query2 看看缺少什么或者打印这个 SQuery 2 直接进入数据库 SQL 数据库错误的最佳方法将帮助你
  • 编辑:我通过调试通过硬编码访问了该页面。谢谢你。我已经得出结论,AddUserAJAX.php 上的 PHP 变量存在一些错误。我会继续调试。
猜你喜欢
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2016-08-31
  • 1970-01-01
  • 2015-04-01
相关资源
最近更新 更多