2016-08-04 12 views
0

少し助けてください。私の問題はかなり困難ですが、私があなたを助けてくれることを願っています:) 私はREST APIコレクションを持っています。 URL1は名前のリストを提供します。 URL2には、URL1の名前のプロパティが含まれています。 (たとえば、URL2?name = URL1.name)。jQuery ajaxコール(REST APIを順番に使用)

URL1 - >アダム、ジュリエット、ジョージ

URL2名=アダム - > ID、プロパティ1など 私は解決策のためにこのコードを作っ

(結果はJSONにしている):?

$(document).ready(function() { 
    var $data_v = $('#content'); 

    var name = []; //store the name list 

    $.ajax({ 
     type:'GET', 
     url: "URL1", 
     success: function(data){ 
      $.each(data, function(i, data){ 
       name[i] = data; 
       console.log("Array: "+name[i]); 
      }); 
     } 
    }).done(function(){ 
      console.log("Succesful Array upload. The array size: "+name.length); 
      for (var item_i=0; item_i<10; item_i++) { //name.length 

       (function(item_i) { // protects i in an immediately called function 
        $.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);     
      }   
    }); 

console.log("Outside The array size: "+name.length); 

}); 

問題1:RESTサーバーに要求が最大であるため、このコードを実行すると、すべてのプロパティが表示されません。停止するため、503エラーが発生します。私はsetTimeoutと.delay()を試してみましたが、このコードを実行した場合、それは気にしませんでした。

問題2:最初の10のプロパティを呼び出そうとしましたが、戻り値が順不同です(ID:1,0,4,6,2,3 ...など)。

このデータをデータベースにアップロードしたいので、すべての点が私にとって重要です。

あなたは何かアイデアや経験がありますか?どのようにこの問題を解決できますか? 私はどんなアイデアに対しても非常に感謝しています。 ありがとうございます。

PS:申し訳ありませんがURLは公開できません。

+0

あなたの残りのサーバーですか?残りのAPIを生成するコードにアクセスできますか? – madalinivascu

+0

はいそれはテストサーバーです。いいえ、私はJSONのためにアクセスすることができます、私は/リンクを参照してください。したがって、このリンク(URL1、URL2)には、ブラウザに表示されるjsonモデルが表示されます。 –

+0

apiの呼び出しで複数のテーブルに参加するオプションがある場合はapiのドキュメントをチェックし、別の解決方法はapiの呼び出しを1回しか実行せず、結合クエリを行う個人のデータベースにデータを保存することです – madalinivascu

答えて

0

この再帰関数試してみてください。

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

これを試してみてください。しかし、私の主な問題は高速要求です。 私はリクエストを遅らせる機会があると思いますか?たとえば毎秒1回のリクエスト? –

+0

timeout関数の男性を使用 – madalinivascu

+0

timeOutが機能していません(理由はわかりません)。 –

0

はアイデアをありがとうと役立ちます。 私のソリューションは、この小さなコードだった:

jQuery.ajaxSetup({async:false}); 

要求が本当に遅いですが、それは503エラーを与えていません。

関連する問題