jQuery-AJAX-Abfrage nach JSON-Antworten, Verarbeitung basierend auf AJAX-Ergebnissen oder JSON-Inhalten

Ich bin ein Anfänger bis Fortgeschrittener in JavaScript / jQuery-Programmen, daher wären konkrete / ausführbare Beispiele sehr willkommen.

Mein Projekt erfordert die Verwendung von AJAX, um eine URL abzufragen, die JSON zurückgibt und entweder dem DOM hinzuzufügenden Inhalt oder eine Nachricht enthält{"status": "pending"} Dies zeigt an, dass das Backend noch daran arbeitet, eine JSON-Antwort mit dem Inhalt zu generieren. Die Idee ist, dass die erste Anforderung an die URL das Backend veranlasst, eine JSON-Antwort zu erstellen (die dann zwischengespeichert wird) und nachfolgende Aufrufe prüfen, ob diese JSON bereit ist (in diesem Fall wird sie bereitgestellt).

In meinem Skript muss ich diese URL in Intervallen von 15 Sekunden bis zu 1:30 Minuten abrufen und folgende Schritte ausführen:

Wenn die AJAX-Anforderung zu einem Fehler führt, beenden Sie das Skript.Wenn die AJAX-Anforderung erfolgreich ist und der JSON-Inhalt enthält{"status": "pending"}, wähle weiter.Wenn die AJAX-Anforderung erfolgreich ist und der JSON-Inhalt verwendbaren Inhalt enthält (d. H. Eine gültige Antwort außer{"status": "pending"}), zeigen Sie den Inhalt an, beenden Sie die Abfrage und beenden Sie das Skript.

Ich habe einige Ansätze mit begrenztem Erfolg ausprobiert, aber ich habe das Gefühl, dass sie alle unordentlicher sind, als sie sein müssen. Hier ist eine Skelettfunktion, die ich mit Erfolg verwendet habe, um jeweils eine einzelne AJAX-Anforderung zu erstellen, die ihre Aufgabe erfüllt, wenn ich verwendbaren Inhalt aus der JSON-Antwort erhalte:

// make the AJAX request
function ajax_request() {
  $.ajax({
    url: JSON_URL, // JSON_URL is a global variable
    dataType: 'json',
    error: function(xhr_data) {
      // terminate the script
    },
    success: function(xhr_data) {
      if (xhr_data.status == 'pending') {
        // continue polling
      } else {
        success(xhr_data);
      }
    },
    contentType: 'application/json'
  });
}

Diese Funktion führt derzeit jedoch nichts aus, es sei denn, sie empfängt eine gültige JSON-Antwort mit verwendbarem Inhalt.

Ich bin nicht sicher, was ich in den Zeilen tun soll, die nur Kommentare sind. Ich vermute, dass eine andere Funktion das Polling übernehmen und Ajax aufrufen sollte_request () nach Bedarf, aber ich kenne den elegantesten Weg für Ajax nicht_request () sendet seine Ergebnisse an die Polling-Funktion zurück, damit diese angemessen reagieren kann.

Jede Hilfe wird sehr geschätzt! Bitte lassen Sie mich wissen, wenn ich weitere Informationen geben kann. Vielen Dank!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage