404未找到-js未向php发送变量

z0qdvdin  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(258)

我试图发送一些变量到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中获取变量。
控制台出错:

mpbci0fu

mpbci0fu1#

ajax post中的变量名与您试图在接收端(php)中提取的内容不一致。如果在javascript中使用这些名称:

data: {
  endadres,
  stadres,
  amount_of_carriers,
  price_finalized
},

必须使用相同的密钥在php中收集它们:

$foo = $_POST["endadres"]

为了调试,我经常发现添加此调试输出以查看所有发布的变量很有用:

var_dump($_POST);

另一方面(与您的问题无关),您的SQLINSERT语句非常危险。您将外部请求中的变量直接连接到数据库查询字符串中,这意味着潜在的违规者可能会发布如下内容:

carriersamo: "'; DROP TABLE Orders;"

这会让你的 Orders 数据库中的表。我建议您阅读php的pdo模块,在那里很容易为数据库准备“安全”语句。http://php.net/manual/en/book.pdo.php

相关问题