我正在尝试将一些变量发送到 PHP 脚本,然后将它们上传到 MySQL 数据库。
这是我的 JS 脚本:
$.ajax({
url: '/insert.php',
type: 'POST',
data: {endadres:endadres,stadres:stadres,amount_of_carriers:amount_of_carriers, price_finalized:price_finalized },
success: function(data) {
console.log(data);
}
})
所有变量都存在于同一个函数中(我通过“alert()”检查过)。
这是我的 PHP 代码:
// Check connection
if($link === false)
{
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$first_name = mysqli_real_escape_string($link, $_REQUEST['FirstName']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['LastName']);
$start_adress = $_POST['startadress'];
$end_adress = $_POST['endadress'];
$Price = $_POST['finallprice'];
$CarriersQuant = $_POST['carriersamo'];
// Attempt insert query execution
$post = "INSERT INTO Orders (FirstName, LastName, StartAdress, EndAdress, Price, CarriersQuant) VALUES ('$first_name', '$last_name', '$start_adress', '$end_adress', '$Price', '$CarriersQuant')";
LastName 和 FirstName 取自 .html,我可以将它们上传到我的数据库中,但我无法从 js 获取变量。
最佳答案
ajax 帖子中的变量名称与您尝试在接收端 (PHP) 中提取的内容不符。如果您在 JavaScript 中坚持使用这些名称:
data: {
endadres,
stadres,
amount_of_carriers,
price_finalized
},
您必须使用相同的 key 在 PHP 中收集它们:
$foo = $_POST["endadres"]
为了调试,我经常发现添加此调试输出以查看所有发布的变量很有用:
var_dump($_POST);
第二点(尽管与您的问题无关),您的 SQL 插入语句非常危险。您将外部请求中的变量直接连接到数据库查询字符串中,这意味着潜在的攻击者可能会发布类似以下内容的内容:
carriersamo: "'; DROP TABLE Orders;"
这将从数据库中删除您的Orders
表。我建议您阅读 PHP 的 PDO 模块,其中很容易为数据库准备“安全”语句。 http://php.net/manual/en/book.pdo.php
关于javascript - 404 not found - JS 未向 PHP 发送变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284039/