AJAX函数
var stopTime = 0;
var checkRequApprove = function ()
{
$.ajax({
url: 'http://127.0.0.1/ProgVsProg/main/checkApproveReq',
success:function(output){
jsn=JSON.parse(output);
if(output==false){
stopTime = setTimeout(checkRequApprove, 3000);
}
else {
bootbox.dialog({
message: "Battle",
title: "Request Accepted",
buttons:
{
success: {
label: "Approve",
className: "btn-success",
callback: function() {
$.ajax({
"type" : "POST",
"url" : "finalBattleApprove",
"data" : {'username' : jsn.user_name},
success: function(data){
$('#example').html(data);
$('#loadingmessage').show();
}
});
}
},
}
}
});
}
stopTime = setTimeout(checkRequApprove,3000);控制器
public function checkApproveReq(){
$id = $this->session->userdata('userID');
$requApprove = '1';
$check = $this->lawmodel->checkRequApprove($id,$requApprove);
foreach($check as $row){
if($row->requApprove == '1')
{
$reqID = $this->lawmodel->getID($row->requestedID);
foreach($reqID as $row){
echo json_encode(
array(
'user_name' =>$row->username,
)
);
}
}
else
echo false;
}
}我有这段代码,其中有一个对数据库的实时检查,如果条件有meet..custom对话框,就会弹出。我在我的checkRequApprove function..The bootbox.dialog上有这个问题,如果控制器满足条件,它就不会出现.我相信我的问题是因为控制器中的echo json_encode。我找不到任何解决方案,.im仍然是ajax的新手。
编辑的自定义对话框只有在我刷新页面后才会显示。
发布于 2014-01-16 14:23:01
output是一个字符串--比较output == false总是会产生false,因为非空字符串总是为true (不考虑edgecase "0“,在这种情况下,"0”== false将产生true)。
而不是
if(output==false){
...
}它应该是:
if (!jsn){ // or jsn == false if you like that better
...
}此外,您还应该考虑在控制器中不返回一个简单的值,但是始终返回一个适当的json对象,如:
else{ // consider always using brackets, for more robustness
echo
array(
'error' => true
);
}现在,在你的js里你只需要检查一下
if (jsn.error){
...
}在任何情况下,您都应该为您的json包含一个错误回调,以便使用json请求处理可能的错误。
https://stackoverflow.com/questions/21163781
复制相似问题