jQuery 建立 AJAX 下拉框表單的例子

來源:互聯網
上載者:User

最近在開發一個小東西的時候出現這麼一個需求,根據 AJAX 請求的資料產生下拉框表單。

這個需求經常會出現,比如全球範圍內地址的選擇,全球所有國家的省份和城市是一堆不小的資料,而且表單還不一定會被使用。這時可以考慮先載入一個空表單,在使用者點擊的時候再用 AJAX 把資料載入進來;或者先載入所有國家的列表,然後根據使用者選擇的國家再載入對應的省份和城市資料。

再比如一些必須使用 AJAX 載入下拉框表單的地方。像 CDK 兌換,需要使用者填寫 CDK 之後再根據 CDK 適用的範圍產生下拉框表單。

實現這個功能是比較簡單的,但是我們要說的是如何更加高效的實現這個功能。

HTML 表單

在 AJAX 擷取並產生資料之前,首先需要一個空的或者存在內容的 HTML 下拉框表單用來填充資料:


<select id="dropdown">
 <option value="">請選擇...</option>
</select>

AJAX 擷取資料

接下來我們可以開始使用 AJAX 擷取資料了,在使用 jQuery 的情況下,AJAX 擷取資料非常簡單方便。

擷取資料的時機可以是在使用者點擊表單的時候、使用者佈建其它表單的內容的時候或者其它時候。


$.ajax( {
 type: 'GET',
 url: AJAXurl,
 dataType: 'json',
 success: function( data ){
  build_dropdown( data, $( '#dropdown' ), '請選擇...' );//填充表單
 }
} );

使用 AJAX 請求 AJAXurl 的地址之後將返回一個 JSON 對象,接下來我們需要解析這些資料,把他填充到下拉框表單裡,這裡使用了自訂方法 build_dropdown()。

填充表單

在上邊用 ajax() 方法擷取到資料之後,使用 build_dropdown() 方法填充了表單資料,這裡我們就來建立這個方法:

//填充表單
var build_dropdown = function( data, element, defaultText ){
 element.empty().append( '<option value="">' + defaultText + '</option>' );
 if( data ){
  $.each( data, function( key, value ){
   element.append( '<option value="' + key + '">' + value + '</option>' );
  } );
 }
}
這個方法用三個參數,分別是表單資料(JSON 對象)、需要被填充資料的表單和預設空選項的文本。

到這裡就可以完成一個 AJAX 擷取資料並產生下拉框表單的過程了。

資料格式

AJAX 擷取的表單資料為 JSON 對象,格式類似於:


{
 'USA'    : '美國',
 'China'  : '中國',
 'Japan'  : '日本',
 'Germany': '德國',
 'Britain': '英國',
 'France' : '法國',
 'Korea'  : '韓國'
}

可以使用 PHP 的 json_encode() 函數,把 PHP 資料變成我們需要的 JSON 對象資料:


echo json_encode( array(
 'USA'     => '美國',
 'China'   => '中國',
 'Japan'   => '日本',
 'Germany' => '德國',
 'Britain' => '英國',
 'France'  => '法國',
 'Korea'   => '韓國'
) );

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.