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



我有一个错误

Warning: Undefined array key "data" in C:xampphtdocsphprecipe-container.php on line 9 ($product = $_POST["data"];)
Warning: Undefined variable $response in C:xampphtdocsphprecipe-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(); 
}
?>

我尝试将isset!empty用于$_POST["data"];,但没有成功。现在它显示";测试";,但没有别的。我该怎么修?

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

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

这可能是您想要做的:

data: JSON.stringify{
data: product
})

最新更新