在页面中包含API调用以加载延迟

时间:2014-03-16 01:04:38

标签: javascript php jquery api

我在这个"表格"上调用另一个服务的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;
     

}

2 个答案:

答案 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。