将 ID 名称发送到 php 变量 (AJAX) 时未定义的数组键 [duplicate]

Undefined array key when sending ID name to php variable (AJAX) [duplicate]

提问人:Astw41 提问时间:8/7/2022 更新时间:8/8/2022 访问量:734

问:

我有一个错误

Warning: Undefined array key "data" in C:\xampp\htdocs\php\recipe-container.php on line 9 ($product = $_POST["data"];)
Warning: Undefined variable $response in C:\xampp\htdocs\php\recipe-container.php on line 24 (echo $response;)

我正在尝试通过AJAX发送单击的div的ID(具有“product”类的div)。Div ID 名称似乎显示在网络选项卡中,但在 PHP 代码中未定义。

//AJAX (head HTML tag)
$(function () { 
        $('.product').on('click', function (e) {
            var product = $(this).attr('id');
            
            $.ajax({
                type: "post",
                url: 'php/recipe-container.php',
                data: product,
                processData: false,
                contentType: false,
                success: function(response) {
                    $(".display_recipe").html(response);
                }
            });
        });
});
//HTML
<div class="product" id="pizza">pizza</div>
<div class="product" id="lasagna">lasagna</div>
<div class="product" id="sushi">sushi</div>
<div class="display_recipe">
  <?php
    require "php/recipe-container.php";
  ?>
</div>
//PHP (recipe-container.php)
<?php

function display(){
    $con = mysqli_connect("localhost", "root", "", "cookbook");
    echo "test";
    $product = $_POST["data"];
    $sql = "SELECT * FROM product WHERE name = '$product'";
    $res = mysqli_query($con,$sql);

while($row = mysqli_fetch_assoc($res)) {
    $name = $row['name'];
    $description = $row['description'];
    $date = $row['date'];

    $response = $name.'<br>';
    $response .= $description.'<br>';
    $response .= $date.'<br>';
    
}
echo $response;

mysqli_close($con);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST'){ 
    display(); 
}

?>

我尝试使用 and for ,但没有用。现在它显示“测试”,但没有其他内容。我该如何解决?isset!empty$_POST["data"];

javascript php jquery ajax 变量

评论

0赞 Robert 8/8/2022
现在您正在发送原始流。如果要访问它,请尝试以下代码:.在此处了解有关流包装器的更多信息:php.net/manual/en/wrappers.php.php$product = file_get_contents("php://input");
0赞 Astw41 8/8/2022
@Robert不幸的是,它不起作用:/

答:

-1赞 Konrad 8/7/2022 #1

这可能是你想做的:

data: JSON.stringify{
  data: product
})

评论

1赞 Astw41 8/8/2022
还是同样的错误。现在在我的网络选项卡中:{data: “pizza”} data: “pizza”。
2赞 Developer Ali Usman 8/8/2022 #2

您必须将数据作为对象而不是变量发送: 在 ajax 请求中:

 data:{
   data: product
 },
 processData:false,

评论

0赞 Astw41 8/8/2022
什么都没有改变,仍然有一个错误。这是网络选项卡有效负载:[object Object]