ホームページ > 記事 > ウェブフロントエンド > Ajaxをベースにしたドロップダウンボックスのデータ連携表示の実装
この記事では、Ajax をベースにしたドロップダウン ボックスでのデータの連携表示を実現する方法を紹介します。コードは、それを必要とする友人がそれを参照することができます。ドロップダウンボックスにデータを連携表示する機能をAjaxで実装するだけなので、時間があったのでデモを探さずに自分で書く方法を考えました。これは私の考えです、精神薄弱な人もいるかもしれません、笑わせないでください。
ページ内の 2 つのドロップダウン リスト ボックス:
<tr> <td style="width: 130px"> 所在学院:</td> <td style="width: 100px"> <select id="college" style="width: 200px" runat="server" onchange="changcollege(this.value)"> <option value="0"> --请选择所在学院学院-- </option> </select></td> </tr> <tr> <td style="width: 130px"> 所在专业:</td> <td style="width: 100px"> <select id="specialty" style="width: 200px" runat="server" onchange="SaveSpecical(this.value)"> <option value="0"> --请选择所在专业-- </option> </select></td> </tr>JS スクリプト コード:
<script type="text/javascript"> var http_request = false; function send_request(method,url,content,responseType,callback)//定义发送请求的函数 { http_request=false; if(window.XMLHttpRequest) { http_request=new XMLHttpRequest(); if(http_request.overrideMimeType) { http_request.overrideMimeType("text/xml"); } } else { try { http_request=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { http_request=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } } if(!http_request) { window.alert("创建XMLHttpRequest对象失败"); return false; } if(responseType.toLowerCase()=="text") { http_request.onreadystatechange=callback; } else { window.alert("ERR"); return false; } if(method.toLowerCase()=="get") { http_request.open(method,url,true); } else if(method.toLowerCase()=="post") { http_request.open(method,url,true); http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); } else { window.alert("Err"); return false; } http_request.send(content); } function changcollege(va)//当学院下拉列表发生改变时触发的脚本事件 { if(va!='0') { var speciality = document.getElementById("specialty"); speciality.disabled=false; var url="Handler.ashx?type=college&id="+va; send_request("GET",url,null,"text",populateClass3); } } function populateClass3()//Ajax执行成功的回调函数 { var f=document.getElementById("specialty"); if(http_request.readyState==4) { if(http_request.status==200) { var list=http_request.responseText; var classList=list.split("|"); f.options.length=1; for(var i=0;i<classList.length;i++) //将取得的结果添加到下级的列表框中 { var tmp=classList[i].split(","); f.add(new Option(tmp[1],tmp[0])); } } else { alert("您所请求的页面有异常。"); } } } </script>
http リクエストをサーバー側の Handler.ashx に送信して処理します。
public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { string type = context.Request.QueryString["type"]; if (type.Equals("college")) { string id = context.Request.QueryString["id"]; context.Response.ContentType = "text/plain"; context.Response.Write(getSpecialty(id));//这个是从数据库中根据传来省的id 查询出来的。学院的名字和主键,主键以便去查专业的名字 } } public string getSpecialty(string college) { DataSet ds = GetInformation.GetSpecialtyInfo(college); string str = ""; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (i == ds.Tables[0].Rows.Count - 1) { str += ds.Tables[0].Rows[i]["SpecialtyID"].ToString() + "," + ds.Tables[0].Rows[i]["SpecialtyName"].ToString(); } else { str += ds.Tables[0].Rows[i]["SpecialtyID"].ToString() + "," + ds.Tables[0].Rows[i]["SpecialtyName"].ToString() + "|"; } } return str.Trim(); } public bool IsReusable { get { return false; } } }
大学番号に従って対応する専攻を取得し、専攻名を「|」で分割して文字列を形成し、クライアントに返します。ドロップダウンボックス。
これは第 2 レベルの連携表示のみですが、第 3 レベルの連携データの実際の原理は同じです。
上記は私があなたのためにまとめたものです。
関連記事:
jqueryにおけるajaxの同期と非同期について詳しく解説 jqueryにおけるajaxの非同期アップロード JQuery ajaxがJSONを返した時の対処法以上がAjaxをベースにしたドロップダウンボックスのデータ連携表示の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。