Javascript AJAX POST不工作,php不';不创建会话
我想将元素的id发送到php并为此创建会话 这是php文件中的一部分:Javascript AJAX POST不工作,php不';不创建会话,javascript,php,ajax,Javascript,Php,Ajax,我想将元素的id发送到php并为此创建会话 这是php文件中的一部分: <?php $sql = "SELECT id FROM products"; $result = mysqli_query($con,$sql); while($row = mysqli_fetch_array($result)) { ?> <tr class="table-manufacture-tr"> <td class="table-manufacture-td-st
<?php
$sql = "SELECT id FROM products";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) {
?>
<tr class="table-manufacture-tr">
<td class="table-manufacture-td-statys">
<div class="warehouse-window-content-dropdown-plus2 plus">
<a class="open_item" data-id=<?php echo "\"".$row['p_id']."\"";?>
style="text-decoration: none; color: #D3D3D3;">Click</a>
</div>
</td>
</tr>
<?php
}
?>
这是get_id.php:
<?php
session_start();
$_SESSION['item_id'] = json_encode($_POST);
header("Content-Type: application/json", true);
?>
我也尝试过不使用内容类型和json。“var data_item”打印的id是正确的,但php不会创建会话,并且在控制台中也会清除(nothing)。会话中没有获取数据的原因是,您没有为会话分配正确的值。它也应该是
json\u decode
而不是json\u encode
替换
$_SESSION['item_id'] = json_encode($_POST);
与
你可以用
$\u SESSION['item\u id']=json\u encode($\u POST['id'])代码>
而不是
$_SESSION['item_id'] = json_encode($_POST);
这将很好。我不知道您想做什么,但从您的JS来看,您似乎希望PHP脚本(您向其发布了一些数据)返回一个json,其中包含您刚刚发布的数据。在这种情况下,请尝试以下操作,将get_id.php更改为:
<?php
session_start();
$_SESSION['item_id'] = json_encode($_POST);
header("Content-Type: application/json", true);
echo $_SESSION['item_id'];
?>
在我看来,您在代码中犯了一些小错误,就像您在回显$row['p\u id']
当您的查询应该返回id
而不是p\u id
时,您在ajax
中也犯了错误,您正在发送数据类型
JavaScript,假设您的代码是减法的,请尝试使用下面的代码i代码
// modify your php code
<?php
$sql = "SELECT id FROM products";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_assoc($result)) { ?>
<tr class="table-manufacture-tr">
<td class="table-manufacture-td-statys">
<div class="warehouse-window-content-dropdown-plus2 plus">
<a class="open_item" data-id=<?php echo "\"".$row['id']."\"";?>
style="text-decoration: none; color: #D3D3D3;">Click</a>
</div>
</td>
</tr>
<?php } ?>
// modify your jQuery
$(document).on('click', '.open_item', function(event){
var data_item = $(this).data("id");
$.ajax({
url: 'get_id.php',
type: 'POST',
dataType: 'json',
data: { id: data_item },
success: function(data){
console.log(data);
},
error: function(){
console.log("not working");
}
});
});
<?php
session_start();
header("Content-Type: application/json", true);
$_SESSION['item_id'] = json_encode($_POST["id"]);
echo json_encode(['data_id' => $_SESSION['item_id']]);
?>
//修改php代码
//修改jQuery
$(文档)。在('单击','上。打开项',函数(事件){
var data_item=$(此).data(“id”);
$.ajax({
url:'get_id.php',
键入:“POST”,
数据类型:“json”,
数据:{id:data_item},
成功:功能(数据){
控制台日志(数据);
},
错误:函数(){
控制台日志(“不工作”);
}
});
});
我将通过确保单击处理程序实际运行来解决此问题。发出警报(“点击”);作为中的第一件事,单击处理程序以确保
同时,删除json调用中的contentType。同时完全删除数据类型(数据类型)。在php端,替换header()行,以便(如上所述)php只是:
session_start();
$_SESSION['item_id'] = $_POST["id"];
echo $_SESSION['item_id'];
现在不要使用json_编码/解码。从您的代码中,它是不需要的。您如何知道会话没有生成?您是否在任何地方打印会话数据?我的ajax调用使用“数据类型”而不是“数据类型”。数据类型也有效吗?另外,php是否返回json数据?尝试将数据类型
替换为数据类型
post变量不是$\u post[“id”]?谢谢,我没有注意到它是否需要json\u encode()?我得到的印象是,这可能只是一个字符串。正如数据类型所提到的:“json”意味着需要json格式的数据,因此将添加json_encode。它是“数据类型”,而不是“数据类型”。它是指预期响应的数据类型。参考:echo['data\u id'=>$\u会话['item\u id']代码>部分将只返回一个字符串数组
,您不能直接回显数组是我的错误现在我调整了代码。请立即尝试。您是双重的json\u编码
-ing,在json中发送json数据是不明智的,它会导致类似这样的结果{“test”:“{\“json\”:\“json data\”}”
您可以发送{“json”:“json data”}
最后一行仅用于测试,不需要这一行,您可以删除它,因为您只需要在会话中设置id。为此,您也只能使用$\u SESSION['item\u id']=$\u POST[“id”]代码>
// modify your php code
<?php
$sql = "SELECT id FROM products";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_assoc($result)) { ?>
<tr class="table-manufacture-tr">
<td class="table-manufacture-td-statys">
<div class="warehouse-window-content-dropdown-plus2 plus">
<a class="open_item" data-id=<?php echo "\"".$row['id']."\"";?>
style="text-decoration: none; color: #D3D3D3;">Click</a>
</div>
</td>
</tr>
<?php } ?>
// modify your jQuery
$(document).on('click', '.open_item', function(event){
var data_item = $(this).data("id");
$.ajax({
url: 'get_id.php',
type: 'POST',
dataType: 'json',
data: { id: data_item },
success: function(data){
console.log(data);
},
error: function(){
console.log("not working");
}
});
});
<?php
session_start();
header("Content-Type: application/json", true);
$_SESSION['item_id'] = json_encode($_POST["id"]);
echo json_encode(['data_id' => $_SESSION['item_id']]);
?>
session_start();
$_SESSION['item_id'] = $_POST["id"];
echo $_SESSION['item_id'];