javascript-複数のAjaxXMLHttpRequest()呼び出しを作成します
Crunchbase API(REST API)からのスタートアップをPHPのURLを介して表示したいと思います。 jsonデータを取得するために、Ajaxを使用して非同期リクエストを提供しています。
最初の関数 2つの非同期リクエストを作成するにはどうすればよいですか?または、このタスクを実行するためのよりエレガントな方法はありますか?現在、読み込み時間は非常に長いです。
20のスタートアップをループするのに約1分かかります。それはもっと速くできるでしょうか?助けてくれてありがとう。 はい、非同期リクエストを行うことができます。ただし、ループの下で実行する必要があるため、ループ自体の内部でリクエストの後に使用されるコードに問題が発生する可能性があります。したがって、同じコードを使用する方が良いです 私たちのウェブサイトで同様の質問で答えを見つけてください。ajaxLoad(page, search);は、最初の
xmlhttp --XMLHttpRequest()を実行して、「パーマリンク」を取得します-
{-code -3}
は2番目のxmlhttp2 によって使用されます-非同期ではないXMLHttpRequest()。 2番目のリクエストは、特定のスタートアップに関する詳細情報を提供します(たとえば、
var permalink = "kickstarter" )。 2000-01-01(
unixtime >= 946684800 )以降に設立されたスタートアップのみを表示したい。現在のコードは機能しますが、両方のリクエストを非同期にしたいと思います。
function ajaxLoad(page、search){
var xmlhttp = new XMLHttpRequest();
xmlhttp .onreadystatechange = function(){
if(xmlhttp .readyState == 4 && xmlhttp .status == 200){<?php
if(isset($ _ GET ['company'])){?>
makeCompanyTable(xmlhttp .responseText); <?php
} else {?>
makeATable(xmlhttp .responseText); <?php
}?>
}
}
xmlhttp .open( "GET"、 "get_json.php?p =" + page + "&search =" + search + "&company = <?php echo $ companyvar;?>"、true);
xmlhttp .send(); }
関数makeATable(json){
var json_de = JSON.parse(json);
var count = Object.keys(json_de.data.items).length
var c = 0;
var val = "";
var col_counter = 1;
while(c!= count){
var xmlhttp 2 = new XMLHttpRequest();
{-コード-3}
xmlhttp 2.open( "GET"、 "get_org.php?permalink =" + permalink、false);
xmlhttp 2.send();
var json_com = JSON.parse(xmlhttp 2.responseText); // Ganze info des jeweiligen Startup
var founding_date = json_com.data.properties.founded_on;
var unixtime = Date.parse(founding_date)/ 1000;
if(unixtime >= 946684800){
val = val +'
';
val = val + json_de.data.items [c] .properties.name;
cl = json_de.data.items [c] .properties.short_description;
val = val +' ';
val = val + json_de.data.items [c] .properties.short_description;
val = val +' Anzeigen ';
// alert(val);
document.getElementById( "col _" + col_counter).innerHTML + = val;
val = "";
col_counter ++;
if(col_counter == 7){
col_counter = 1;
}
}
c ++;
}}
答え :
解決策:
同様の質問