2017-02-01 3 views
1

Ich habe eine jquery erstellt und wollte die Datei nach 2 Sekunden neu laden, aber auch mit Daten.einen div nach 2 Sekunden mit Buchungsdaten neu laden

Dies ist die HTML

<input type="hidden" id="class_id" value="<?php echo $data['class']; ?>" /> 
<input type="hidden" id="user_id" value="<?php echo $_SESSION['uid']; ?>" /> 
<tbody id="donors_list"></tbody> 

Mein JQuery

$.ajaxSetup({ cache: false }); 

$(document).ready(function() { 
    var class_id = $('#class_id').val(); 
    var user_id = $('#user_id').val(); 
    setTimeout(
     $.ajax({ 
      url   : "includes/get_data.php", 
      type  : "POST",    
      data  : {class_id : class_id, user_id : user_id, new_list: 'new_list'}, 
      dataType : 'text',    
      success  : function(data) { 
       $("#donors_list").html(data); 
      } 
     }); 
    , 2000); 
}); 

Fehler:

VM229:1 Uncaught SyntaxError: Unexpected identifier

+0

leider nicht gepostet Fehler VM229: 1 Uncaught Syntaxerror: Unerwartete Kennung –

Antwort

1

Sie müssen statt setTimeout

verwenden
+1

Groß es für mich gearbeitet –

+1

@MarkAlan 'setInterval' wird Problem erstellen, wenn api nicht abgeschlossen wird in 2sec – Satpal

+0

@Satpal Sie können das immer erweitern Intervall oder arbeite mit Promises. Aber das war nicht der Punkt dieser Frage. –

1

Im aktuellen Code ist ein Syntaxfehler aufgetreten. Die Methode setTimeout() erwartet, dass eine Methode/ein Code im Stringliteral ausgeführt wird.

Da das Intervall 2sec (sehr wenig) ist, würde ich empfehlen, den Code in Funktion zu verpacken und dann den Callback success rekursiv aufzurufen. Hier setTimeout zu verwenden, um die Ausführung von $.ajax() Aufruf zu verzögern.

$(document).ready(function() { 
    //on Page load 
    f() 
}); 

function f() { 
    setTimeout(function() { 
     var class_id = $('#class_id').val(); 
     var user_id = $('#user_id').val(); 
     $.ajax({ 
      url: "includes/get_data.php", 
      type: "POST", 
      data: { 
       class_id: class_id, 
       user_id: user_id, 
       new_list: 'new_list' 
      }, 
      dataType: 'text', 
      success: function (data) { 
       $("#donors_list").html(data); 

       //Schedule for next execution 
       f(); 
      } 
     }) 
    }, 2000); 
} 
+2

Ich bevorzuge diese Antwort – Pete

+0

@Satpal Ich bevorzuge Ihren Ansatz auch, dachte nicht darüber nach, danke, ich habe nur eine kleine Frage, in der Erfolg Rückruf, wenn Sie 'f()' aufrufen, wird es die Verzögerung von 2 Sekunden respektieren? Was wird angehängt, wenn der Ajax-Anruf 1 Sekunde dauert, um zu vervollständigen, wird der nächste Anruf auf mehr Sekunde warten? Und wenn der Ajax-Ruf 3 Sekunden dauert, um abzuschließen? Wird 'f()' sofort aufgerufen? –

+0

@GilleQ. _wird es respektieren die 2 Sekunden Delay_ Antwort ist Nein. Wenn es mehr als 2sec dauert zu vervollständigen und wir es alle 2 Sekunden abfeuern wird es den Server – Satpal

Verwandte Themen