请检查以下代码:
PHP& HTML代码(file1.php):
<?php
$conn = //connected to db successfully.
$sql = "SELECT t1.column1 AS Column_1 FROM table1 t1";
$rs = mysqli_query($conn,$sql);
$rows= mysqli_fetch_assoc($rs);
do{
?>
<button data-id="<?php echo $rows['Column_1']; ?>" type="button" onclick="handle_item('id')">Click Me</button> <br>
<?php }while($rows = mysqli_fetch_assoc($rs)); ?>
jQuery AJAX代码(file1.php):
<script type="text/javascript">
var item_id;
function handle_item(item_id) {
var c = $(this).data(item_id);
$.ajax({
url: 'handle_input.php',
type: 'POST',
data: {
'button_id': c
},
success: function (data) {
alert(data);
}
});
}
</script>
PHP代码(handle_input.php):
<?php
echo "Button with id ".$_POST['item_id]." clicked!";
?>
现在问题是(正如你所料)在这种情况下臭名昭着的错误,&#34;未定义的索引:button_id&#34;错误。当我点击其中一个按钮时,我收到它作为警告错误。我已经阅读了关于SO的重复问题,但遗憾的是,我读过的所有问题都无法解决我的问题。感谢你指导我。
此外,正如您从我的代码中看到的那样,我从数据库中获取了几个按钮并在显示时,我为每个按钮分配了一个数据ID,并在ajax中使用该数据ID以在&#39; handle_input中使用.PHP&#39;我想收到我点击过的每个按钮ID。提前谢谢。
更新
自从我提出这个问题以来已经有一段时间了,但我对自己的问题一直很好奇: 为什么数组模式(数据:{&#34; button_id&#34;:c})在$ .ajax函数中不适用于我(这会导致$ _POST变量的未定义索引错误)而字符串模式(数据:&#34; usg_id =&#34; + c)呢?
答案 0 :(得分:1)
您正在发送:
button_id:..
但您正在使用,也缺少'
$_POST['item_id]
更改为:
$_POST["button_id"]
<强>更新强>
添加this
作为第一个参数:
onclick="handle_item(this, 'id')"
然后,将handle_item
功能更改为:
function handle_item(obj,item_id) {
var c = $(obj).data(item_id);
答案 1 :(得分:0)
<script type="text/javascript">
var item_id;
function handle_item(item_id) {
var c = $(this).data(item_id);
$.ajax({
url: 'handle_input.php',
type: 'POST',
data:"item_id="+c,
success: function (data) {
alert(data);
}
});
}
</script>
您的函数中没有定义button_id因此错误。 同样在handle_input中,您将获取item_id