[英]CodeIgniter - getting data from database automatically using setInterval
在codeigniter中,我想自動顯示數據庫中的更改,而無需重新加載頁面,因此我在自己的視圖中使用ajax運行控制器功能。 我正在使用setInterval
一遍又一遍地運行該函數,直到控制器函數listen_auth
返回1並且視圖顯示1。
視圖:
<h4 class="qr-title" id="status"></h4>
<script>
var username = <?php echo(json_encode($username)); ?>;
function checkAuthStatus() {
setInterval(getStatus, 1000);
}
function getStatus() {
var isAuth = <?php echo(json_encode($isAuth)); ?>;
$.ajax({
url: '<?php echo base_url('auth/listen_auth'); ?>',
type: 'post',
data: {username:username},
success: function(data){
console.log(data);
}
});
document.getElementById("status").innerHTML = isAuth;
}
</script>
這是我的控制器中的listen_auth()
函數:
public function listen_auth(){
$username = $this->input->post('username');
$isApproved = $this->adminmodel->get_auth($username);
if($isApproved == 1){
return 1;
} else{
return 0;
}
}
問題是,只有重新加載頁面后, isAuth
變量才會更改...我做錯了嗎? 還是有更好的方法來做到這一點?
您需要聲明$ isAuth並在ajax請求中分配其值,因為php變量在沒有服務器請求的情況下不會更改其值。
服務器“ listen_auth()”中的函數應打印文本而不返回。
public function listen_auth(){
$username = $this->input->post('username');
$isApproved = $this->adminmodel->get_auth($username);
if($isApproved == 1){
echo 1;
} else{
echo 0;
}
}
然后從服務器在AJAX請求中獲得答案:
<script>
var username = <?php echo(json_encode($username)); ?>;
function checkAuthStatus() {
setInterval(getStatus, 1000);
}
function getStatus() {
var isAuth = <?php echo(json_encode($isAuth)); ?>;
$.ajax({
url: '<?php echo base_url('auth/listen_auth'); ?>',
type: 'post',
data: {username:username},
success: function(data){
document.getElementById("status").innerHTML = data;
}
});
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.