이 글에서는 ajax를 기반으로 드롭다운 박스에서 데이터의 연계 표시를 구현하는 방법을 소개합니다. 코드가 매우 간단합니다. 필요한 친구는 이를 참조할 수 있습니다.
회사에서 프로젝트를 수행할 때 필요합니다. 드롭다운 박스에 데이터를 연결하여 표시하는 기능을 이용하여 간단하게 Ajax를 이용하여 구현해 보았는데, 시간이 많아서 데모를 구하지 않고 직접 작성하는 방법을 고민했습니다. 그냥 제 생각일 뿐이고 정신지체자도 있을 수 있으니 웃기지 않으셨으면 좋겠습니다.
페이지에 있는 두 개의 드롭다운 목록 상자:
<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>
처리를 위해 서버 측의 Handler.ashx에 http 요청을 보냅니다.
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가 JSON을 반환할 때 처리하는 방법
위 내용은 Ajax를 기반으로 드롭다운 상자에 데이터의 연결 표시 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!