[英]ajax setTimeout not working on json_encode
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;
}
}
我有這段代碼,其中有對數據庫的實時檢查,是否滿足條件。.custom對話框將彈出。 我在checkRequApprove
函數上遇到此問題。.如果在控制器中滿足條件,則bootbox.dialog
將不會顯示...我相信我的問題是因為在控制器中echo json_encode
。 我找不到任何解決方案。我還是ajax的新手。
編輯后 ,自定義對話框僅在刷新頁面后顯示。
output
是一個字符串-比較output == false
將始終產生false,因為非空字符串始終為true(不考慮邊緣情況“ 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請求中可能出現的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.