创建多个Ajax XMLHttpRequest()调用

时间:2015-07-10 18:50:30

标签: javascript php jquery ajax asynchronous

我想通过PHP的URL显示来自Crunchbase API(REST API)的初创公司。要检索json数据,我使用Ajax来提供异步请求。 第一个函数xmlhttp将执行第一个var permalink = json_de.data.items[c].properties.permalink; - XMLHttpRequest()以获取第二个xmlhttp2使用的“永久链接” - var permalink = "kickstarter" - XMLHttpRequest()不是异步的。第二个请求将提供有关特定启动的更多信息(例如unixtime >= 946684800)。我只想显示2000-01-01(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(); } function 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 xmlhttp2 = new XMLHttpRequest(); var permalink = json_de.data.items[c].properties.permalink; xmlhttp2.open("GET", "get_org.php?permalink="+ permalink, false); xmlhttp2.send(); var json_com = JSON.parse(xmlhttp2.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 + '<div class="card profile-view"><div class="pv-header"><img src="'; var cln = ""; cln = cln + json_de.data.items[c].properties.profile_image_url; if (cln == "" || cln.length <= 0) { val = val + "img/does_not_exist.png"; } else { val = val + json_de.data.items[c].properties.profile_image_url; } val = val + '" class="pv-main" alt=""></div><div class="pv-body"><h2>'; val = val + json_de.data.items[c].properties.name; cl = json_de.data.items[c].properties.short_description; val = val + '</h2><small'; val = val + '>'; val = val + json_de.data.items[c].properties.short_description; val = val + '</small><a href="startup.php?company=' + json_de.data.items[c].properties.permalink + '" class="pv-follow-btn">Anzeigen</a></div></div>'; //alert(val); document.getElementById("col_"+col_counter).innerHTML += val; val = ""; col_counter++; if(col_counter == 7){ col_counter = 1; } } c++; } } )之后成立的创业公司。我当前的代码有效,但我希望这两个请求都是异步的。

如何创建两个异步请求?或者是否有更优雅的方式来执行此任务?目前加载时间非常长。

循环完成20个创业大约需要1分钟。可以更快地完成吗?谢谢你的帮助。

{{1}}

1 个答案:

答案 0 :(得分:0)

是的,您可以提出同步请求。但是,由于您希望在循环下执行此操作,因此可能会在循环内部的请求之后使用的代码产生问题。所以,如果你使用相同的代码

,那就更好了