В 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
изменится только после перезагрузки страницы ... Я что-то не так делаю? Или есть ли лучший способ сделать это?
2 ответа
Функция с сервера '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>
Вам необходимо объявить $ isAuth и присвоить его значение в запросе ajax, потому что переменная php не изменит свое значение без запроса к серверу.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.