2017-04-19 47 views
1

我有一個關於我的ajax的問題​​,我從我的數據庫中添加數據,並且我正在嘗試刷新我的div。有時它的工作很棒,但有時卻不行。爲什麼?。阿賈克斯有時運行時有時不運行

這裏是我的代碼,其中我有一個函數addtoqueue和其成功的內部,我已經把div複習,以便在我的數據庫中添加後,我會刷新我的div。有時它運作良好,但有時並非如此,我曾多次試過它,但總是失敗。爲什麼?

function addtoqueue(patient_id) { 
    if(getClinicID != undefined) { 
    if (confirm("Are you sure you want to add this in queue?")) { 
     $.ajax({ 
      url: siteurl+"myclinic/patientaddqueue", 
      type: "POST", 
      data: {patient_id:patient_id,clinic_id:getClinicID}, 
      dataType: "JSON", 
      success: function(data) { 
       refresh_afterdel(getClinicID); 
       alert("Patient Successfully Added"); 
      } 
     }); 
    } 
    } 
    else{ 
    alert("There is no clinic selected"); 
    } 
} 

這是我refresh_afterdel功能與全碼:

function refresh_afterdel(getClinicID) { 
$("#queue").empty(); 
    $.ajax({ 
     url: siteurl+"myclinic/get_patients_refresh/"+getClinicID, 
     type: "GET", 
     dataType: "JSON", 
     success: function(data) { 
      if(data.length>0) { 
       $("#queue").empty(); 
      for(i=0;i<data.length;i++) { 
       $('#queue').append('<div class="col-sm-10">'+'<div class="panel-group">'+'<div class="panel panel-info">'+ 
            '<div class="panel-heading">'+'<h4><a data-toggle="collapse" href="#patientinfo'+data[i]['patient_id']+'">'+data[i]['order_num']+' '+data[i]['patient_lname']+', '+data[i]['patient_fname']+' <span class="fa fa-arrow-circle-o-down pull-right"></span></a></h4>'+ 
            '</div><!-- panel-heading -->'+'<div id="patientinfo'+data[i]['patient_id']+'" class="panel-collapse collapse">'+'<div class="panel-body">'+'<div class="row">'+ 
            '<div class="col-sm-5">'+'<small>Patient ID: <label id="patientID">'+data[i]['patient_id']+'</label></small>'+''+'<button onclick="checkstatus('+data[i]['patient_id']+','+data[i]['queue_id']+');this.disabled=true;" id="btn'+data[i]['patient_id']+'" class="btn btn-success btn-sm ">Check me up</button>'+'<button onclick="checkstatus1('+data[i]['patient_id']+');" id="btn'+data[i]['patient_id']+'" class="btn btn-success btn-xs ">View History</button>'+ 
            '<button onclick="removequeuedoc('+data[i]['queue_id']+');" id="btn'+data[i]['patient_id']+'" class="btn btn-danger btn-xs btnmarg">&nbsp;&nbsp;&nbsp; Remove &nbsp;&nbsp;&nbsp;</button>'+'</div><!-- col-sm-4 -->'+'<div class="col-sm-6">'+ 
            '<div class="img-patient">'+'<div class="patient-pic" style="background-image: url('+data[i]['patient_photo']+')"></div>'+'</div><!-- img-patient -->'+'</div><!-- col-sm-6 -->'+'</div><!-- row -->'+ 
            '</div><!-- panel-body -->'+'</div><!-- panel-collapse -->'+'</div><!-- panel -->'+'</div><!-- panel-group -->'+'</div><!-- col-sm-10 -->'); 
      };    
      } 
     } 
    }); 
} 

現在,這裏是我的控制檯的屏幕截圖,顯示的是,我以後單擊該按鈕addtoqueue的refresh_afterdel不運行。我的屏幕截圖中的紅色標籤後面必須跟着get_patients_refresh,因爲它是refresh_afterdel函數的ajax,看看藍色標籤,它顯示了我的函數的正確運行。 enter image description here

+1

這不就是異步操作需要不確定的時間嗎? – evolutionxbox

+0

@evolutionxbox謝謝你的回覆,先生,我有一個在其他函數中的異步函數,在截圖checkingUpdates,但它影響過程? 。它不是我的addtoqueue代碼的一部分? –

+0

ln 2:getClinicID可以具有值或爲null,它不可能等於undefined。您正在尋找'typeof getClinicID!='undefined''來查看變量是否已被初始化。 – Chase

回答

0

爲了幫助找到問題,我建議您除了「成功」之外還爲其他事件添加處理程序(例如「錯誤」)。然後,您可以查看您的查詢是否因某些可識別的原因而失敗。

此外,如果您只是通過檢查後續「refresh_afterdel」函數是否啓動新的ajax請求來觀察代碼執行,則可以考慮在執行的較早部分中添加控制檯日誌條目(或必要時發出警報),以查看在哪裏它失敗。

+0

我已經添加警報,警報也不會執行,但是當我檢查查詢時,它是好的,數據被添加 –