找不到404-JS未将变量发送到PHP

时间:2018-11-13 15:13:55

标签: javascript php mysql ajax

我正在尝试将一些变量发送到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获取变量。

控制台错误:

Error 404

1 个答案:

答案 0 :(得分:0)

ajax帖子中的变量名与您尝试在接收端(PHP)中提取的变量名不符。如果您在JavaScript中坚持使用这些名称:

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

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

$foo = $_POST["endadres"]

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

var_dump($_POST);

第二点(尽管与您的问题无关),您的SQL插入语句非常危险。您正在将来自外部请求的变量直接连接到数据库查询字符串中,这意味着潜在的违规者可能会发布以下内容:

carriersamo: "'; DROP TABLE Orders;"

这将从数据库中删除您的Orders表。我建议您阅读PHP的PDO模块,在该模块中很容易为数据库准备“安全”语句。 http://php.net/manual/en/book.pdo.php