我的ajax调用有问题,它会继续调用我的控制器。
AJAX功能
<script type="text/javascript">
var stopTime =0;
var scoreCheck = function ()
{
$.ajax({
url: "<?php echo 'http://127.0.0.1/ProgVsProg/main/checkScore'?>",
success:function(output){
if(output){
$('#maincontent1').html(output);
clearTimeout(stopTime);
}
else{
stopTime = setTimeout(scoreCheck, 1000);
}
}
});
}
stopTime = setTimeout(scoreCheck,3000);
</script>
控制器
public function checkScore(){
$id = $this->session->userdata('userID');
$battleID = $this->lawmodel->getBattle($id);
foreach($battleID as $row){
$Rscore = $row->requestedScore;
$Cscore = $row->challengerScore;
if($Cscore=="1"){
redirect('main/secondRound');
}
else if($Rscore == '1'){
redirect('main/secondRound');
}
}
}
这是我的 secondRound函数
public function secondRound(){
$category = 'medium';
$data['results'] = $this->lawmodel->roundTwoQuestion($category);
$data['content'] = 'battlePage';
if($this->session->userdata('is_logged_in'))
{
$this->load->view('includes/template2',$data);
}
else
{
redirect('main/restricted');
}
}
我的问题是如何在第一次重定向后停止ajax调用..因为我使用setTimeout来检查数据库中是否有变化。如果我的数据库发生了变化,它将重定向到另一个控制器。在我的模型 roundTwoQuestion()中,它将查询数据库中的随机数据,限制为1。
在我看来......我将继续使用roundTwoQuestion中的随机数据重定向/刷新。
请帮忙!我是ajax的新手。 :(
答案 0 :(得分:0)
您的控制器功能称为“CheckScore”,因此返回检查状态并在成功AJAX回调中对其进行测试,然后调用另一个函数(或使用javascript重定向,...),如果状态为真,则重定向:
AJAX功能
<script type="text/javascript">
var stopTime =0;
var scoreCheck = function ()
{
$.ajax({
url: "<?php echo 'http://127.0.0.1/ProgVsProg/main/checkScore'?>",
success:function(output){
if(output === "OK"){
clearTimeout(stopTime);
//Ok, now you can redirect using the way you want
}
else{
//Check return a false status, so continue to execute this function
stopTime = setTimeout(scoreCheck, 1000);
}
}
});
}
stopTime = setTimeout(scoreCheck,3000);
</script>
<强>控制器强>
public function checkScore(){
$id = $this->session->userdata('userID');
$battleID = $this->lawmodel->getBattle($id);
//Do your check here according to your DB result
echo ($status) ?"OK" : "KO";
}