我在这个"表格"上调用另一个服务的API。页。
大多数情况下API调用其他服务的速度很慢..浏览器需要刷新2-4次才能完成调用。
我的问题是:
我有一个从API调用填充的下拉选择菜单:
<select name="memberID" id="memberID"> <? if(!empty($organization_list)) { foreach($organization_list as $memberID=>$companyName) { $s = ""; if($offer['memberID'] == $memberID || $_GET['m'] == $memberID) $s = " selected"; echo "<option value='".$memberID."' $s>".stripslashes($companyName)."</option>"; } } ?> </select>
显然包括上面的API函数..
由于这是从另一个API服务调用的页面上唯一的SELECT / DROPDOWNN菜单,因此它会先加载2-3次空...
有没有办法可以让这个选择菜单继续加载,直到完全完成,而页面上的其他内容都已加载...
我不希望整个页面因为这个下拉列表而停滞......?
提前感谢NINJAS !!
以下是API调用:
ini_set(&#39; max_execution_time&#39;,3000); {print_r(&#34;
"); print_r($data); }define("API_KEY",'XXX'); define("ACCOUNT_ID",'XXX');
/** ** This method is used for the get company list or contact or member ** Param
*/ function get_organization_list() { $api_key = API_KEY; $account_id = ACCOUNT_ID; $organization_list = array();$url =
"https://api.wildapricot.org/v1/Accounts/$account_id/Contacts?apikey=$api_key"; $public_contact_member = file_get_contents($url); $json_decode_arr = json_decode($public_contact_member); //pr($json_decode_arr); if(!empty($json_decode_arr)) { $json_decode_arr->ResultUrl; $url = ''; $url = $json_decode_arr->ResultUrl; $url = $url."&apikey=".$api_key; $public_contact_member_list = file_get_contents($url); $json_decode_arr = json_decode($public_contact_member_list); $json_decode_arr = ( array ) $json_decode_arr ; //pr($json_decode_arr); // Contacts // $json_decode_arr["Contacts"]; if( isset($json_decode_arr["Contacts"]) and !empty($json_decode_arr["Contacts"]) and !isset($_SESSION["json_decode_arr"])) { $_SESSION["json_decode_arr"] = $json_decode_arr; } if(isset($_SESSION["json_decode_arr"]) and !empty($_SESSION["json_decode_arr"])) { $json_decode_arr = $_SESSION["json_decode_arr"] ; // pr($_SESSION["json_decode_arr"]); } if(!empty($json_decode_arr["Contacts"])) { $size_of_array = count($json_decode_arr["Contacts"]); for($i=0;$i $array_field = (array) $json_decode_arr["Contacts"][$i]->FieldValues;
// pr( $array_field );$value_get = 16; $orgranization_id = $array_field[$value_get]->Value; $value_get = 17; $orgranization_name = $array_field[$value_get]->Value; if($orgranization_name!="") { $member_id=''; for($jk=0; $jk<count($array_field); $jk++) { if($member_id=="") { $filed_name = $array_field[$jk]->FieldName; if($filed_name=="Member ID") { $member_id = $array_field[$jk]->Value; //echo '<br/>'; } } } if(isset($member_id) and $member_id!='') { $organization_list[$member_id] = $orgranization_name; }else{ $organization_list[$orgranization_id] = $orgranization_name; } } } } } asort($organization_list); return $organization_list;
}
答案 0 :(得分:1)
您应该考虑使用XMLHttpRequest(ajax)
例如使用php和jquery
<?php
//getMyDropdown.php
$item1 = array(
"id"=>1,
"description"=>"fu"
);
$item2 = array(
"id"=>2,
"description"=>"bar"
);
$output = [$item1,$item2]:
echo json_encode($output);
exit();
?>
<form action="http://mysite.fr/action.php" method="post">
<select id="myDropdown"></select>
<input type="submit" value="send" disabled/>
<script type="text/javascript">
$.ajax({
type: "GET",
url: "/getMyDropdown.php",
dataType: "json",
success: function ( data ) {
var select = document.getElementById('myDropdown'), html = "";
for(var i = 0, max = data.length; i < max; i++){
html += "<option value='" + data[i].id + "'>" + data[i].description + "</option>\n";
}
select.innerHTML = html;
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
</script>
您可以添加一些代码示例,以便我们调整答案吗?
答案 1 :(得分:1)
使用jQuery.ajax方法查看ajax和js框架,例如jQuery。