1. 程式人生 > >Ajax動態下拉列表

Ajax動態下拉列表

 許多頁面上都涉及有下拉框,即select標籤。對於簡單的下拉框,被選擇的資料是不需要改變的,我們可以用寫死。這樣下拉框的資料永遠都是那幾條。

  示例:

1 <select>
2     <option>資訊一</option>
3     <option>資訊二</option>
4     <option>資訊三</option>
5     <option>資訊四</option>
6 </select>

  但是有些專案或者工程是需要將資料庫中的資料呈現出來並提供選擇的,下拉的內容會隨資料庫中資料的變化而變化。首先我們有asp元件可以幫我們做這這件事

情,DropDownList元件,只需要將資料庫中查詢得到的資料新增進該元件中,在前臺即可以顯示出動態下拉的效果。如果想更有新意,不依賴於傳統元件,ajax就是

個不錯的選擇。下面一步步來通過ajax實現動態下拉的效果。

  1.js發出ajax請求:

複製程式碼

 1 $(document).ready(function () {
 2     $.ajax({
 3         timeout: 3000,
 4         async: false,
 5         type: "POST",
 6         url: "WareHouse.ashx",
 7
dataType: "json", 8 data: { 9 warehouse: $("#issued_sub_key_c").val(), 10 }, 11 success: function (data) { 12 for (var i = 0; i < data.length; i++) { 13 $("#issued_sub_key_c").append("<option>" + data[i].Name + "</option>"
); 14 } 15 } 16 }); 17 });

複製程式碼
  ajax請求WareHouse.ashx(一般處理程式)來獲得資料,請求成功後將返回的json資料附加到id為issued_sub_key_c的select標籤。值得注意的是這裡將async的屬性改為了false,async的預設狀態為true,即為非同步。值改為false就是同步了。但是當async為false的時候,ajax請求完資料之前,瀏覽器一直處於鎖死狀態,這樣會讓使用者認為程式崩潰了,所以就人為的添加了一個超時(timeout),這樣就不會出現程式崩潰的假象。回到話題開始,為什麼要將async改為false呢?原因就是當ajax是非同步請求的時候進入到頁面後出現下拉框資料還未同步,下拉框是空白資料(可以自己體驗體驗)。所以我們需要利用同步的特性並配合超時來完成下拉框的資料同步。

  2.一般處理程式:從資料庫返回的資料是List型別,我們需要自己定義一個toJson()方法將list轉化為json資料,然後返回json資料。

複製程式碼

1 public string toJson(List<string> str)
 2         {
 3             StringBuilder json = new StringBuilder();
 4 
 5             if (str == null)
 6             {
 7                 return "null";
 8 
 9             }
10 
11             json.Append("[");
12             foreach (var item in str)
13             {
14                 json.Append("{\"Name\":\"");
15                 json.Append(item);
16                 json.Append("\"},");
17             }
18 
19             return json.ToString().Substring(0, json.ToString().LastIndexOf(",")) + "]";
20         }
21 
22 
23         /*得到並關聯倉庫(select標籤)*/
24 
25         public void ProcessRequest(HttpContext context)
26         {
27 
28             SubinventoryDC subinventorydc = new SubinventoryDC();
29 
30             List<string> list = new List<string>();
31 
32             list = subinventorydc.getAllSubinventory();
33 
34             string json = toJson(list);
35 
36             context.Response.ContentType = "text/plain";
37 
38             context.Response.Write(json);
39         }

複製程式碼
  

  3.前臺頁面:前臺只需要定義一個id為issued_sub_key_c的select標籤。注意select標籤須得有一個name,後臺正是通過name來取得選中資料的值。取值方

法:Request.Form[“issued_sub_key_c”]。

1 <select id="issued_sub_key_c" name="issued_sub_key_c">
2 
3 </select>

相關推薦

Ajax動態列表

 許多頁面上都涉及有下拉框,即select標籤。對於簡單的下拉框,被選擇的資料是不需要改變的,我們可以用寫死。這樣下拉框的資料永遠都是那幾條。   示例: 1 <select> 2 <option>資訊一</option

topgp combobox動態列表

mit ces ... byte mat date limit update conf 用過TOPGP的都知道,畫面上的下拉列表是寫死在畫面檔上的,每個程序都要手動去維護一遍,很惡心很麻煩,鼎捷也發現了這個問題,在T100上面就全部使用了動態的方式顯示,具體的操作方式就是可

ajax 迴圈列表及預設選擇

$.ajax({ url:"getData.asp", success:function(yData){ var sData = unescape(yData); var gData

自定義webpart引數---動態列表

        本篇文章介紹的是在sharepoint 2010中用VS 2010開發自定義webpart。         自定義開發的webpart分為兩種:帶引數的和不帶引數的;帶引數的分為需要繫結外部資料的和不需要繫結外部資料的。         不帶引數的webp

Ajax動態列表新增資料

1. 前臺jsp,新建一個下拉控制元件 <select id="seldvd" onChange="sel_onchange(this)"></select> 2. js部分,建一個function方法,利用ajax,指向 'get

ajax動態更新列表

    前面做了一個ajax的小demo,今天看一個動態更新下拉列表,或者也叫級聯更新下拉列表,這個也是利用ajax的非同步呼叫去後臺實現資料請求,然後回到前臺完成下拉列表資料的更新,以增強web應用的互動性。 後臺servlet package com.ajax;

列表資料動態載入 springmvc jquery ajax

1、Spring-mvc 程式碼如下 : <!-- 避免IE執行AJAX時,返回JSON出現下載檔案 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframew

.NET中一般處理程式(ashx)在Ajax中的使用--列表動態級連

NET框架中有一個檔案型別是一般處理檔案(.ashx)。可以在ajax開發中作為伺服器端使用。特別是當在請求停留在一個頁面的時候,下面舉個例子--實現html下拉列表的級連更新。 (1)ddlInnerJoin.aspx程式碼: <head runat="server"

分別在javascript和JSP中動態設置列表默認值

技術 bsp 分享 列表 tex align scrip jsp頁面 sin 一.JavaScript中動態設置select標簽中<option>選項的默認值: 比如,要完成下邊這個下拉列表的動態顯示,並且當進行前後翻頁時,下拉列表中的值自動更新為當前頁碼

C# 動態顯示列表的資料

public List<UserInfo> list = new List<UserInfo>(); //查詢採購員 SqlConnection conn = new SqlConnection("Server=.;Database=JiYunMaterials

ajax+jQuery+thinkphp實現動態表的實現

//js的呼叫thinkphp控制器 <script> $(document).ready(function(){ $("#register").click(function(){   window.open("__URL__/register.html","

jQuery動態新增列表選項

不說了,直接上程式碼: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String

使用jQuery+ajax實現級列表的級聯顯示

html部分程式碼為下拉列表新增onchange事件         <div class="form-group" style="margin-right: 0">           

easyui -combobox 動態獲取列表 前後臺完整過程

前臺:通過url=roleNameList.do 向後臺獲取json資料 $(function(){ $.getJSON("roleNameList.do",function(json) { $('#roleName').combobox({ data: json.r

ajax實現動態框[JFinal框架]

問題: 實現此效果,其中頁面型別是通過ajax查詢資料庫展示的效果 原因: 解決辦法: 前臺: <div class="form-group"> <label cl

js+ajax 實現搜尋列表

input + dataList +ajax 實現搜尋下拉列表。原來一直都是select一動態載入很麻煩,還不可以搜尋,自己寫下拉搜尋的話還要調css樣式覺得很麻煩。調整樣式什麼。查閱了下H5的API

動態生成列表

使用DOM及誒動態生成select下拉列表 用陣列儲存下拉列表的資料內容 使用一個按鈕控制載入下拉列表中的內容 原html程式碼 <html> <head> <title>動態生成下拉列表資料</title&

Ajax+SSM實現四級聯列表

function catalogABC(){ var object = $("#catalog").val(); $("#second").empty(); if(object !=null){ $.ajax({ url : "

JAVA EE 專案常用知識 之AJAX技術實現select列表聯動的兩種用法(讓你真正理解ajax

ajax 下拉列表聯動的用法。 ajax的定義: AJAX 是一種用於建立快速動態網頁的技術。 通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。 ajax效果的一個例子: 區域為

jquery用ajax方式從後臺獲取json資料後如何將內容填充到列表

從後臺獲取json資料,將內容填充到下拉列表,程式碼非常簡單,具體過程請看下面程式碼。 需求:url:連結     par:ID       sel:下拉列表選擇器 function BuildSelectBox(url, par, sel) { $(sel).emp