javascript - 为什么在这段代码的 $('selector').delegate() 方法中不能调用 $.ajax() 方法
问题描述
我正在寻找一种方法来选择我们使用 JS 由 PHP 回显的元素。我发现有一种方法可以使用“delegate()”。所以,在这里我试图选择被点击的元素,然后从数据库中检索与它对应的详细信息。
控制台打印“错误!”
有什么我想念的吗。我还在学习 jQuery。还有其他方法可以做我想做的事情吗?
注意:同样由于某种原因,此脚本在外部 JS 文件中不起作用。
这是我写的脚本
$("body").delegate( "li.allfriends", "click", function() {
var friend = $(this).html();
var username = "<?php echo $_SESSION['user'] ?>";
var data = { 'action': 'showExpenses', 'username': username, 'friend': friend };
$.ajax({
url: 'ajax.php',
dataType: 'json',
data: data,
method: 'POST',
success: function (data) {
console.log('Success!');
console.log(data);
},
error: function (error) {
console.log('Error!');
}
});
});
这是我正在处理它的地方
if($_POST['action'] == 'showExpenses') {
$username = $_POST['username'];
$friend = $_POST['friend'];
$rows = $misc->showExpensesForSelectedFriend($username, $friend);
return json_encode($result);
}
这是我检索数据的最后一个函数
public function showExpensesForSelectedFriend($username, $friend) {
$username = $this->sql->escape($username);
$friend = $this->sql->escape($friend);
$rows1 = $this->sql->getDatas('expense', 'paidBy', $username, 'owedBy', $friend);
$rows2 = $this->sql->getDatas('expense', 'paidBy', $friend, 'owedBy', $username);
foreach($rows2 as &$item) {
array_push($rows1, $item);
}
return $rows1;
}
控制台打印错误!,后来我检查了 showExpensesForSelectedFriend() 工作正常。
解决方案
也许这应该是你的问题。json_encode($result);
试着把这个变量变成array
这样。
if($_POST['action'] == 'showExpenses') {
$username = $_POST['username'];
$friend = $_POST['friend'];
$rows = $misc->showExpensesForSelectedFriend($username, $friend);
$result = array();
if(count($rows) == 0) {
$result['status'] = 0;
}
return json_encode($result);
}
您可以将返回值称为data.status
.
$.ajax({
url: 'ajax.php',
dataType: 'json',
data: data,
method: 'POST',
success: function (data) {
console.log('Success!');
console.log(data.status);
},
error: function (error) {
console.log('Error!');
}
});
推荐阅读
- dax - 使用切片器而不是书签来显示单独的表格视觉效果
- python - 有没有办法为每个用户创建一个唯一的事件处理程序。| Python 不和谐机器人
- c++ - 如何从输入的 txt 文件创建数组
- javascript - 同一页面上有多个 javascript 计数器
- javascript - 使用html2canvas截图,但是截图不全,底部是灰色的
- mysql - 使用golang将数组中的行批量插入到sql server
- r - 无法在 Mac OS 上安装 crrri 包
- visual-studio-code - OpenBMC VSCode 自动完成
- sql-server - Control-M - 使用 On-Do 操作分析 SQL Server 输出
- react-native - 为什么当 iframe 的 src 是 localhost 但不是来自外部 https 域时,它会正确呈现?