1. 程式人生 > >jquery實現省市聯動的兩種方式(xml,,,json)

jquery實現省市聯動的兩種方式(xml,,,json)

省市聯動,xml傳值方式

匯入相應的jar

建立表單

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
>
<title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script> // 這個是用xml傳資料 的js <script type="text/javascript" src="js/cityjs.js"></script> </head> <body> //向後端傳value的值,進行查詢 <select id="vv"> <option >--請選擇--</option
>
<option value="1">--河南--</option> <option value="2">--蘇州--</option> <option value="3" >--廣東--</option> </select> <select id="c"> <option >--請選擇--</option> </select> </body> </html>

建立js

//標準格式不解釋
$(function() {
//建立事件,當該標籤的值被改變時事件被觸發
$("#vv").change(function() { //獲取被監視的標籤的值 //$("#province").varl(); var pid = $(this).val(); //建立post請求,傳值pid,執行事件function,data表示servlet傳過來的值 $.post( "/checkUsername/cityservlet",{pid:pid} ,function(data,status){ //寫html資料到城市下來列表框,因為寫資料用的時追加,所以在每一次切換的時候需要對資料進行重置 $("#c").html("<option >--check--") //對servlet傳過來的值進行處理 //查詢標籤時city,然後遍歷,執行function $(data).find("city").each(function() { //獲取city標籤的子標籤的文字框的id var id = $(this).children("id").text(); //獲取city標籤的子標籤的文字框的城市名 var cname = $(this).children("cname").text(); //寫html資料到城市下來列表框 $("#c").append("<option value='"+id+"' >"+cname) }); } ); }); });

建立servlet,dao

        try {
            request.setCharacterEncoding("UTF-8");
            int pid=Integer.parseInt(request.getParameter("pid"));
            checkdao c=new checkImpl();
            List<city> list = c.findcity(pid);
        //建立XStream工具類的物件
            XStream xs=new XStream();
            //自己手動設定轉化成xml後的標籤的名字,預設為類的全路徑
            xs.alias("city", city.class);
            //將資料轉換為xml
            String xml = xs.toXML(list);

            System.out.println(xml);


            response.setContentType("text/xml;charset=utf-8");
            response.getWriter().write(xml);    
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

省市聯動,json傳值方式

匯入相應的jar

建立表單

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
//這是json資料的js
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="js/cityjson.js"></script>
</head>
<body>
<select id="vv">
<option >--請選擇--</option>
<option value="1">--河南--</option>
<option value="2">--蘇州--</option>
<option value="3" >--廣東--</option>
</select>

<select id="c">
<option >--請選擇--</option>
</select>
</body>
</html>

建立js

//格式化東西
$(function(){
//監聽標籤,當其值被改變的時被觸發執行function
    $("#vv").change(function() {
        var pid=$(this).val();
//建立post請求,傳值pid,執行事件function,data表示servlet傳過來的值
        $.post("/checkUsername/jsonservlet",{pid:pid},function(data,status){
//寫html資料到城市下來列表框,因為寫資料用的時追加,所以在每一次切換的時候需要對資料進行重置
            $("#c").html("<option value='' >--check--");
//遍歷data資料執行function,,i表示下標,,,c表示遍歷收到的資料            
            $(data).each(function(i,c) {
            //將值寫入下拉標籤
                $("#c").append("<option value='"+c.pid+"'>"+c.cname);          
            });
            //需要手動加上json,不然不識別。
        },"json");
    });
});

建立servlet,dao

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            request.setCharacterEncoding("UTF-8");


            int pid=Integer.parseInt(request.getParameter("pid"));
            checkdao c=new checkImpl();
            List<city> list = c.findcity(pid);
            JSONArray ja=JSONArray.fromObject(list);

            String json = ja.toString();

            System.out.println(json);

            response.setContentType("text/xml;charset=utf-8");
            response.getWriter().write(json);

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}