2016-08-04 28 views
0

Ich würde gerne ein wenig Hilfe für Sie fragen. Mein Problem ist ziemlich schwierig, aber ich hoffe du kannst mir helfen :) Ich habe eine REST API Sammlung. Die URL1 enthält eine Liste von Namen. Die URL2 enthält eine Eigenschaft des Namens der URL1. (zum Beispiel URL2? Name = URL1.name).jQuery Ajax Anruf mit REST API in Folge

URL1 -> Adam, Juliet, George

URL2 name = Adam -> ID, Property1 usw. (die Ergebnisse sind in JSON)

ich diesen Code für die Lösung aus:

Problem 1: Der REST-Server hat eine maximale Anfrage, also wenn ich diesen Code ausführen Es nicht alle Eigenschaften anzeigen, weil es stoppt und ich habe 503 Fehler. Ich habe versucht, die setTimeout und .delay(), aber wenn ich diesen Code ausgeführt Es war egal mit ihnen.

Problem 2: Ich versuchte, rufen Sie die erste 10-Eigenschaft, aber die Rückgabewerte waren nicht in Ordnung (zum Beispiel die IDs: 1,0,4,6,2,3 ...).

Alle Punkte sind wichtig für mich, weil ich diese Daten in die Datenbank hochladen möchte.

Haben Sie eine Idee oder Erfahrung, wie kann ich diese Probleme lösen? Ich wäre sehr dankbar für irgendwelche Ideen. Vielen Dank im Voraus.

PS: Sorry für die URL, aber ich kann es nicht veröffentlichen.

+0

Ist es Ihr Rest-Server? Haben Sie Zugriff auf den Code, der den Rest erzeugt? – madalinivascu

+0

Ja, es ist ein Testserver. Nein, ich kann nur auf den JSON zugreifen, wenn ich den Link sehe/verwende. Dieser Link (URL1, URL2), den Sie im Browser sehen können, zeigt das JSON-Modell. –

+0

Überprüfen Sie die API-Dokumentation, wenn es die Möglichkeit hat, mehrere Tabellen in einem API-Aufruf beizutreten, eine andere Lösung wird sein, die API-Aufrufe nur einmal zu tun und speichern Sie die Daten in einer persönlichen Datenbank, wo Sie eine Join-Abfrage – madalinivascu

Antwort

0

versuchen, diese rekursive Funktion:

var item_i = 0; 
function recursiv(item_i) { 
$.getJSON("URL2/?"+name[item_i]+"&any_other_property", function(data_items) { 
         var items = []; 
         console.log("ID"+data_items[0]); 
         console.log("Property 1"+data_items[1]); 
         item_i++; 
         if(item_i <10) { 
          recursiv(item_i); 
         } 

        }); 
}; 
+0

Es ist eine gute Idee, ich werde es versuchen, aber mein Hauptproblem ist die schnelle Anfragen. Denkst du, habe ich irgendeine Gelegenheit, die Anfragen zu verlangsamen? Zum Beispiel 1 Anfrage pro Sekunde? –

+0

Verwenden Sie Timeout-Funktionen man – madalinivascu

+0

Das TimeOut funktioniert nicht (ich weiß nicht warum). –

0

Danke für die Ideen und hilft. Meine Lösung war dieser kleine Code:

jQuery.ajaxSetup({async:false}); 

Die Anfragen wirklich langsam sind, aber es ist nicht geben 503 Fehler.