gpt4 book ai didi

php - 从 PHP 函数返回内容并同时触发 jQuery 操作的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 03:28:09 25 4
gpt4 key购买 nike

所以标题有点含糊,但我会尝试举一个例子。基本上,我的 PHP/CodeIgniter 网站中有一个“奖励”系统(类似于 StackOverflow 的徽章),并且我希望在获得奖励后立即向用户显示通知。

现在我很高兴它出现在下一个页面加载中,但是,理想情况下我希望它在奖励交易后立即出现,因为我的网站主要由 Ajax 驱动,并且可能不会重新加载页面经常。

系统当前的工作方式是:

1) 如果用户做了一些事情来触发获得奖励,CodeIgniter 会执行以下操作:

$params['user_id'] = $this->tank_auth->get_user_id();
$params['award_id'] = 1; // (I have a database table with different awards in)
$this->awards->award($params);

2) 我的自定义库 $this->awards 运行 award 函数:

function award($params)
{
$sql = $this->ci->db->query("INSERT INTO users_awards (user_id, award_id)
VALUES ('".$params['user_id']."','".$params['award_id']."')
ON DUPLICATE KEY UPDATE duplicate=duplicate+1");

$awardinfo = $this->ci->db->query("SELECT * FROM awards WHERE id = ".$params['award_id']);

// If it's the 'first time' the user has gotten the award (e.g. they've earnt it)
if ($awardinfo->row('duplicate') == 0) {
$params['title'] = $awardinfo->row('title');
$params['description'] = $awardinfo->row('description');
$params['iconpath'] = $awardinfo->row('iconpath');
$params['percentage'] = $awardinfo->row('percentage');

return $params;
}
}

因此,它会奖励用户(如果他们获得了两次奖励,则将无用的重复字段更新一个),然后检查这是否是他们第一次获得奖励(这样它就可以提醒他们奖励) 。如果是这样,它会获取变量(奖项的标题、奖项描述、要显示的奖项图标的路径,以及最终也获得此奖项的用户的百分比)并将它们作为数组返回。

所以...就是这样。现在我想知道,最好的方法是什么?目前我的颁奖位是从 Controller 调用的,但我想如果我希望通过 Ajax 触发它,那么代码应该放在 View 文件中...?

总结一下:我需要在不刷新页面的情况下显示返回的奖励数据。这样做的最佳方法是什么? (我已经在我的页面上使用 jQuery)。

非常感谢大家!

jack

最佳答案

您需要实现一个推送通知系统。有几种方法可以做到这一点。您可以简单地轮询更改:

setInterval(check_awards, 30000);

function check_awards() {
$.getJSON('/awards.php', function(result) {
...
});
}

每 30 秒检查一次新奖励。如果需要新的东西,PHP 脚本会返回一个适当的 JSON 对象,涉及奖励类型等。

另一种方法是使用虚假推送通知:

$(function() {
check_awards();
});

function check_awards() {
$.ajax({
url: '/awards.php',
success: function(data) {
// update awards
},
complete: function() {
check_awards();
}
});
}

这有时称为长轮询。您需要更改它,以便您的 PHP 脚本在有内容返回之前不会结束。每当 AJAX 请求返回(由于成功、超时或其他错误)时,您都会再次启动请求。

有关详细示例,请参阅 How to show popup message like in stackoverflow .

关于php - 从 PHP 函数返回内容并同时触发 jQuery 操作的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com