jQuery代码:
$(document).ready(function(){
$('.tablePend tbody').on('click','.btn',function(){
// var id=$('#test-pend').val();
var currow=$(this).closest("tr");
var colId = currow.find('td:eq(3)').text();
var id = colId;
alert(id);
$.post("../admin/detail.php", {
pid:id
});
});
});
所以上面的代码可以正常工作,警报显示我想要的结果
<?php
include('dbh.inc.php');
include_once('header.php');
if(isset($_POST['pid'])) {
$id = mysqli_real_escape_string($conn, $_POST['pid']);
$sql= "SELECT event_name, event_desc, event_date, event_id FROM events WHERE event_id='$id'";
$result= mysqli_query($conn, $sql);
echo $id;
} else {
echo 'nothing';
}
include_once 'footer.php';
?>
所以在这里,PHP自动转到else语句,该语句什么也不显示,我不知道出了什么问题,我已经尝试了所有可能的方式,好几天了,这确实让我感到沮丧,我也相信我犯了一个简单的错误,但我找不到它。
答案 0 :(得分:0)
我认为,您应该检查$ conn。您尚未在detail.php文件中声明它。
答案 1 :(得分:0)
我必须认真研究才能得出这个答案。
您的$.post()
jQuery代码不包含成功(或错误)处理程序。这意味着无论发生什么情况,您都不会看到PHP文件所说的结果。但在您的问题中,您说可以看到nothing
。因此,这使我怀疑您实际上根本没有通过AJAX提交。
您已向我们展示了jQuery代码,其中在按钮上附加了事件处理程序。我的猜测是您的按钮位于<form>
中。当您单击表单中的按钮时,它将提交。如果要让jQuery处理它,则必须明确指定不应进行常规表单提交。而且您的jQuery代码无法做到这一点。
这意味着当您单击按钮时,表单通常按 提交。您的事件处理程序可能会触发,并且代码会启动,但是与此同时,浏览器已移至您的<form>
目标,而jQuery永不止步。您的<form>
实际上并不包含id
,而您是使用jQuery动态设置的。因此,您以<form>
为目标,没有发布任何id
,并且在页面上看到了nothing
。
解决方法是停止常规表单提交:
$(document).ready(function(){
$('.tablePend tbody').on('click','.btn',function(event){
event.preventDefault();
// rest of your code
请注意,我已经添加了event
作为传递给事件处理程序的参数,然后使用了其preventDefault()
方法。 .post()
documentation中显示了一个示例。