jquery和ajax实现省市区三级联动封装和不封装两种方式
本文主要为大家详细介绍了jquery+ajax实现省市区三级联动的相关代码,包括封装和不封装两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。
首先,要实现如下图效果,
1、要理清思路:
先做出三个下拉菜单----根据第一个下拉菜单的value值获取第二个下拉列表的内容,第三个同理。
2、用到的数据库表:Chinastates表
规律:根据国家级(中国)的areacode查询省级(如:北京) ; 根据省级的areacode查询市级(如:北京市辖);根据市级的areacode查询区级(如东城区)
第一种方式:没有用到封装,数据读取较慢,可以看看原理,这样在第二种方式封装时就容易多了。
代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="../jquery-1.11.2.min.js"></script> </head> <body> <select id="sheng"></select> <select id="shi"></select> <select id="qu"></select> </body> </html> <script type="text/javascript"> $(document).ready(function(e){ //输出省 var code = "0001"; $.ajax({ async:false, //取消异步 url:"chuli.php", data:{code:code}, type:"POST", dataType:"TEXT", success:function(data){ var hang = data.trim().split("|"); //trim()去空格 var str=""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); str = str+"<option value='"+lie[0]+"'>"+lie[1]+"</option>"; } $("#sheng").html(str); } }); //输出市 $("#sheng").click(function(){ var code2=$("#sheng").val(); $.ajax({ async:false, url:"chuli.php", data:{code:code2}, type:"POST", dataType:"TEXT", success:function(data2){ var hang2 = data2.trim().split("|"); var str2 =""; for(var i=0;i<hang2.length;i++) { var lie2=hang2[i].split("^"); str2 = str2 +"<option value ='"+lie2[0]+"'>"+lie2[1]+"</option>"; } $("#shi").html(str2); } }); }) //输出区县 $("#shi").click(function(){ var code3=$("#shi").val(); $.ajax({ async:false, url:"chuli.php", data:{code:code3}, type:"POST", dataType:"TEXT", success:function(data3){ var hang3 = data3.split("|"); var str3 =""; for(var i=0;i<hang3.length;i++) { var lie3=hang3[i].split("^"); str3 = str3 +"<option value ='"+lie3[0]+"'>"+lie3[1]+"</option>"; } $("#qu").html(str3); } }); }) }) </script>
期间出现的问题:每个下拉列表的第一个数据输不出来:是因为每个下拉列表的第一个数据的value值都带有空格!!!所以在输出data时要去空格!!!
data返回的值可能带有空格换行等,所以要用trim()方法去空格!!!
第二种方式:封装成插件,以后可以随时调用(重要)
(1)主页面:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title><br>//引入jquery包 <script src="../jquery-1.11.2.min.js"></script><br>//引用我们自己封装的js文件 <script src="sanji.js"></script> </head> <body><br>//id要与封装的js插件中一致 <p id="sanji"></p> </body> </html>
(2)我们自己封装的js插件
$(document).ready(function(e){ //扔三个下拉列表到主页面建的p中 $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>"); //加载省的数据 LoadSheng(); //加载市的数据 LoadShi(); //加载区的数据 LoadQu(); //给省的下拉列表添加点击事件,当省变化时,对应的市和区会发生变化 $("#sheng").click(function(){ LoadShi(); LoadQu(); }) //给市的下拉列表添加点击事件,当市变化时,对应的区发生变化 $("#shi").click(function(){ LoadQu(); }) }); //加载省的下拉列表 function LoadSheng() { var pcode = "0001"; $.ajax({ async: false, url: "chuli.php", data: { code: pcode }, type: "POST", dataType: "TEXT", success: function(data) { var hang = data.trim().split("|"); var str = ""; for(var i = 0; i < hang.length; i++) { var lie = hang[i].split("^"); str = str + "<option value='" + lie[0] + "'>" + lie[1] + "</option>"; } $("#sheng").html(str); } }); } //加载市省的下拉列表 function LoadShi() { var pcode = $("#sheng").val(); $.ajax({ async: false, url: "chuli.php", data: { code: pcode }, type: "POST", dataType: "TEXT", success: function(data) { var hang = data.trim().split("|"); var str = ""; for(var i = 0; i < hang.length; i++) { var lie = hang[i].split("^"); str = str + "<option value = '" + lie[0] + "'>" + lie[1] + "</option>"; } $("#shi").html(str); } }); } //加载省的下拉列表 function LoadQu() { var pcode = $("#shi").val(); $.ajax({ url: "chuli.php", data: { code: pcode }, type: "POST", dataType: "TEXT", success: function(data) { var hang = data.trim().split("|"); var str = ""; for(var i = 0; i < hang.length; i++) { var lie = hang[i].split("^"); str = str + "<option value = '" + lie[0] + "'>" + lie[1] + "</option>"; } $("#qu").html(str); } }); }
其次就是处理页面(两种方法都用到的):chuli.php
<?php $code=$_POST["code"]; require "DB.class.php"; $db=new DB(); $sql="select areacode,areaname from chinastates where parentareacode='{$code}'"; $str=$db->strquery($sql); echo $str;
最后就是封装的类文件:DB.class.php
function strquery($sql) { $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); $result = $db ->query($sql); $arr =$result->fetch_all(); $str=""; foreach($arr as $v) { $str=$str.implode("^",$v)."|"; } $str = substr($str,0,strlen($str)-1); return $str; } } ?>
相关推荐:
Atas ialah kandungan terperinci jquery和ajax实现省市区三级联动封装和不封装两种方式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bina enjin cadangan autolengkap menggunakan PHP dan Ajax: Skrip sisi pelayan: mengendalikan permintaan Ajax dan mengembalikan cadangan (autocomplete.php). Skrip pelanggan: Hantar permintaan Ajax dan cadangan paparan (autocomplete.js). Kes praktikal: Sertakan skrip dalam halaman HTML dan nyatakan pengecam elemen input carian.

Bagaimana untuk menggunakan kaedah permintaan PUT dalam jQuery? Dalam jQuery, kaedah menghantar permintaan PUT adalah serupa dengan menghantar jenis permintaan lain, tetapi anda perlu memberi perhatian kepada beberapa butiran dan tetapan parameter. Permintaan PUT biasanya digunakan untuk mengemas kini sumber, seperti mengemas kini data dalam pangkalan data atau mengemas kini fail pada pelayan. Berikut ialah contoh kod khusus menggunakan kaedah permintaan PUT dalam jQuery. Mula-mula, pastikan anda memasukkan fail perpustakaan jQuery, kemudian anda boleh menghantar permintaan PUT melalui: $.ajax({u

Menggunakan Ajax untuk mendapatkan pembolehubah daripada kaedah PHP adalah senario biasa dalam pembangunan web Melalui Ajax, halaman boleh diperoleh secara dinamik tanpa menyegarkan data. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Ajax untuk mendapatkan pembolehubah daripada kaedah PHP, dan memberikan contoh kod khusus. Pertama, kita perlu menulis fail PHP untuk mengendalikan permintaan Ajax dan mengembalikan pembolehubah yang diperlukan. Berikut ialah kod contoh untuk fail PHP mudah getData.php:

Tajuk: Petua jQuery: Cepat ubah suai teks semua teg pada halaman Dalam pembangunan web, kita selalunya perlu mengubah suai dan mengendalikan elemen pada halaman. Apabila menggunakan jQuery, kadangkala anda perlu mengubah suai kandungan teks semua teg dalam halaman sekaligus, yang boleh menjimatkan masa dan tenaga. Berikut akan memperkenalkan cara menggunakan jQuery untuk mengubah suai teks semua teg pada halaman dengan cepat, dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan fail perpustakaan jQuery dan memastikan bahawa kod berikut dimasukkan ke dalam halaman: <

Tajuk: Gunakan jQuery untuk mengubah suai kandungan teks semua teg jQuery ialah perpustakaan JavaScript yang popular yang digunakan secara meluas untuk mengendalikan operasi DOM. Dalam pembangunan web, kita sering menghadapi keperluan untuk mengubah suai kandungan teks tag pautan (tag) pada halaman. Artikel ini akan menerangkan cara menggunakan jQuery untuk mencapai matlamat ini dan memberikan contoh kod khusus. Pertama, kita perlu memperkenalkan perpustakaan jQuery ke dalam halaman. Tambahkan kod berikut dalam fail HTML:

Ajax (JavaScript Asynchronous dan XML) membenarkan menambah kandungan dinamik tanpa memuatkan semula halaman. Menggunakan PHP dan Ajax, anda boleh memuatkan senarai produk secara dinamik: HTML mencipta halaman dengan elemen kontena dan permintaan Ajax menambah data pada elemen selepas memuatkannya. JavaScript menggunakan Ajax untuk menghantar permintaan kepada pelayan melalui XMLHttpRequest untuk mendapatkan data produk dalam format JSON daripada pelayan. PHP menggunakan MySQL untuk menanyakan data produk daripada pangkalan data dan mengekodnya ke dalam format JSON. JavaScript menghuraikan data JSON dan memaparkannya dalam bekas halaman. Mengklik butang mencetuskan permintaan Ajax untuk memuatkan senarai produk.

jQuery ialah perpustakaan JavaScript popular yang digunakan secara meluas untuk mengendalikan manipulasi DOM dan pengendalian acara dalam halaman web. Dalam jQuery, kaedah eq() digunakan untuk memilih elemen pada kedudukan indeks tertentu Senario penggunaan dan aplikasi khusus adalah seperti berikut. Dalam jQuery, kaedah eq() memilih elemen pada kedudukan indeks yang ditentukan. Kedudukan indeks mula dikira dari 0, iaitu indeks elemen pertama ialah 0, indeks elemen kedua ialah 1, dan seterusnya. Sintaks kaedah eq() adalah seperti berikut: $("s

Bagaimana untuk mengetahui sama ada elemen jQuery mempunyai atribut tertentu? Apabila menggunakan jQuery untuk mengendalikan elemen DOM, anda sering menghadapi situasi di mana anda perlu menentukan sama ada sesuatu elemen mempunyai atribut tertentu. Dalam kes ini, kita boleh melaksanakan fungsi ini dengan mudah dengan bantuan kaedah yang disediakan oleh jQuery. Berikut akan memperkenalkan dua kaedah yang biasa digunakan untuk menentukan sama ada elemen jQuery mempunyai atribut khusus, dan melampirkan contoh kod tertentu. Kaedah 1: Gunakan kaedah attr() dan operator jenis // untuk menentukan sama ada elemen mempunyai atribut tertentu
