我是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文件也在本地服务器上执行的方式。有人有什么想法可以解决问题吗?
提前致谢
答案 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,我会在一秒钟内检查出来。