使用jQuery ajax创建数据库表的麻烦

时间:2013-03-30 12:41:29

标签: php javascript jquery sql ajax

我是jQuery和ajax的新手。目前我正在尝试在我的本地sql server上从一个javascript文件创建一个表,我将该语句发布到.php文件以执行该语句。

.js文件:

function executeStatement(sqlStatement){
    $.ajax({
      type: "post",
      data: sqlStatement,
      cache: false,
      url: "api.php",
      dataType: "text",
      error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
      },
      success: function ()
      {
        alert ("Success!!");
      }
    });
  }

.php文件:

  require_once('PhpConsole.php');
  PhpConsole::start();
  debug('HERE!!!');

  $sqlStatement = $_POST['sqlStatement'];

  $host = "*****";
  $user = "*****";
  $pass = "*****";
  $databaseName = "db_user_data";

  // Create connection
  $con = mysqli_connect($host, $user, $pass, $databaseName);

  // Check connection
  if (mysqli_connect_errno($con)){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
  else{
    $con->query($sqlStatement);
    header('Location: success.php');  
  }

我使用PHP控制台调试.php文件,但在这种情况下甚至是第一个日志'HERE !!!'没有打印到控制台,所以我想知道它是否甚至到达这个.php文件。无论如何,即使数据库中没有任何更改,也会到达executeStatement方法中的事件success并打印“成功”。通过.php文件也在本地服务器上执行的方式。有人有什么想法可以解决问题吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

PHP代码中的“$ pass”变量有一个拼写错误:

require_once('PhpConsole.php');
PhpConsole::start();
debug('HERE!!!');

$sqlStatement = $_POST['sqlStatement'];

$host = "*****";
$user = "*****";
**$pass = "*****";**
$databaseName = "db_user_data";

// Create connection
$con = mysqli_connect($host, $user, $pass, $databaseName);

// Check connection
if (mysqli_connect_errno($con)){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else{
  $con->query($sqlStatement);
  header('Location: success.php');  
}
编辑:这是我修改过的JS代码 - 这对我很有用,因为我能够将代码从AJAX调用传递给PHP代码并返回。试试这个:

var sqlStatement = "sqlStatement=SQLSTATEMENTHERE";
$.ajax({
  type: "POST",
  data: sqlStatement,
  cache: false,
  url: "api.php",
  success: function ()
  {
    alert ("Success!!");
  }
});

将变量放在函数外部,将ajax调用放在里面以替换旧函数。至于PHP,我会在一秒钟内检查出来。