所以标题有点模棱两可,但我会试着举个例子。基本上,我在我的PHP/CodeIgniter网站上有一个“奖励”系统(类似于StackOverflow的徽章),我希望一旦获得奖励,就会向用户显示一条通知。什么是从PHP函数返回东西并同时触发jQuery动作的最佳方式?
现在我很高兴在下一页加载时出现这种情况,但理想情况下,我希望在奖励交易后立即出现,因为我的网站大部分采用Ajax技术,并且可能没有页面经常重新加载。
系统工作目前的方法是:
1)如果用户没有什么触发奖励的收入,笨做到这一点:
$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;
}
}
所以,奖励用户(如果他们已经earnt两次,通过一个更新一个无用的重复字段),该ñ检查它是否是他们第一次收到它(因此它可以提醒他们奖励)。如果是这样,它会得到变量(奖励的标题,奖励描述,奖励显示图标的路径,以及最终获得此奖项的用户的百分比)并将其作为数组返回。
所以......就是这样。现在我想知道,做这件事的最好方法是什么?目前我的授奖位是从控制器调用的,但我想如果我想通过Ajax触发它,那么代码应该放在View文件中...?
总结一下:我需要返回的奖励数据不会刷新页面。这样做的最好方法是什么? (我已经在我的页面上使用jQuery)。
非常感谢大家!
插孔
非常好,谢谢!我采用推送通知/轮询的第一种方法。感谢您的帮助,Cletus! :) – Jack 2010-06-13 19:30:52