2017-04-19 4 views
1

Ich habe ein Problem in Bezug auf meine Ajax, ich bin ein Hinzufügen von Daten aus meiner Datenbank, und ich versuche, meine div zu aktualisieren. Manchmal funktioniert es gut, aber manchmal nicht. Warum ist es?.Ajax manchmal läuft manchmal nicht

Hier ist mein Code, wo ich eine Funktion Addtoqueue und innerhalb seines Erfolges habe, habe ich ein div Refresher, so dass nach dem Hinzufügen in meiner Datenbank, ich werde meine div aktualisieren. Manchmal funktioniert es gut, aber manchmal ist es nicht, ich habe es viele Male versucht und es hat immer versagt. Warum?

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"); 
    } 
} 

Hier ist meine refresh_afterdel Funktion mit voller Code:

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 -->'); 
      };    
      } 
     } 
    }); 
} 

Hier ist der Screenshot meiner Konsole, die zeigt, dass, nachdem ich die Schaltfläche geklickt addtoqueue die refresh_afterdel nicht ausgeführt. Auf das rote Label in meinem Screenshot muss get_patients_refresh folgen, da es der Ajax der refresh_afterdel-Funktion ist, schaue in das Label blue, es zeigt den korrekten Ablauf meiner Funktion an. enter image description here

+1

Sind das nicht nur asynchrone Operationen, die eine unbestimmte Zeit in Anspruch nehmen? – evolutionxbox

+0

@evolutionxbox Danke für Ihre Antwort, Sir ich habe eine asynchrone Funktion in anderer Funktion, die im Screenshot die Überprüfung aktualisiert, aber beeinflusst es den Prozess? . Es ist nicht Teil meines addtoqueue-Codes? –

+0

ln 2: getClinicID kann entweder einen Wert haben oder null sein, es kann niemals gleich undefined sein. Sie suchen nach typeof getClinicID! = 'Undefined', um zu sehen, ob die Variable initialisiert wurde oder nicht. – Chase

Antwort

0

Um das Problem zu finden, empfehle ich, zusätzlich zu "success" auch Handler für andere Ereignisse hinzuzufügen (zum Beispiel "error"). Dann können Sie sehen, ob Ihre Abfrage aus irgendeinem erkennbaren Grund fehlschlägt. Wenn Sie nur die Codeausführung beobachten, indem Sie prüfen, ob die nachfolgende "refresh_afterdel" -Funktion eine neue Ajax-Anfrage startet, können Sie Konsolenprotokolleinträge (oder Warnungen, falls erforderlich) in früheren Teilen der Ausführung hinzufügen, um zu sehen, wo es schlägt fehl.

+0

Ich habe bereits eine Warnung hinzugefügt, die Warnung wird auch nicht ausgeführt, aber wenn ich die Abfrage überprüfe, ist es in Ordnung, die Daten wurden hinzugefügt –

Verwandte Themen