php - PHP 文件不接收来自 AJAX 帖子的数据
问题描述
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 语句,我不知道出了什么问题,我已经尝试了所有可能的方法,这几天,这真的让我很沮丧,我也相信我做了一个简单的错误,但我找不到。
解决方案
我不得不做一些调查才能得出这个答案。
您的$.post()
jQuery 代码不包含成功(或错误)处理程序。这意味着无论发生什么,您都不会看到您的 PHP 文件所说的结果。但是在你的问题中,你说你可以看到nothing
. 所以,这让我怀疑你根本没有通过 AJAX 提交。
您已经向我们展示了 jQuery 代码,其中您的按钮附加了一个事件处理程序。我猜你的按钮在 aa 里面<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()
文档中有一个示例。
推荐阅读
- performance - 使用 JMeter 进行 IMAP 邮件采样器负载测试以增加 fetchsize
- javafx - Create and bind DoubleProperty in user control with FXML
- java - 如何将实体对象绑定到本地 @Transient 属性?
- r - 使用 mutate 创建新列
- objective-c - 应用程序在 NSUserDefaults setObject:forKey 上崩溃:
- r - 根据 R 中的标准计算时间
- mysql - 如何在 MySQL alter 命令中添加 if 语句?
- php - 实时更新产品类别购物车项目计数,无需在 Woocommerce 中重新加载
- spring - 在 JPA 中定义自定义 ID
- sql - 我有列 entry_date,我必须每天排除过去 3 年的数据。Ex-从 2015-10-11 到当前日期,依此类推