繼上一個三級聯動的補充--使用jQuery編寫各種瀏覽器相容簡易專案
1.專案概述
專案使用的開發技術:hibernate+struts+ajax+jQuery+mysql
與上一個三級聯動不同的是:上一個專案是使用dom技術編寫的整個js程式碼,存在一定的不足與bug,即瀏覽器不相容,只在火狐中有成效,IE、opera、google等都不能相容。。。到底是哪個模組導致的不相容,本人目前正在測試中,歡迎有志之士一塊測試,對本人鞭策;這個專案改進了上一個專案的不同,使用輕量的jQuery技術編寫js的核心程式碼,不存在瀏覽器相容的問題(本人親測:IE、opera、火狐、google),而且程式碼更加簡化和邏輯化;核心程式碼的編寫採用了jQuery中提供的三種ajax介面的方法,來實現使用ajax技術的非同步通訊,具體見原始碼,其中有詳細的註釋;
轉載請指明出處:楊凱專屬頻道
完整專案(預設成1分了,忘了改變資源分值了,本來想0分上傳的,抱歉):tianyazaiheruan
2.專案原始碼
$(document).ready(
function() {
// jQery的第一個案例
// 呼叫ajax請求,js的原生格式,直接寫{}物件
$.ajax({
async : true, // 非同步傳送請求
type : "GET", // 採用傳送請求的方式,預設的是get,還有post方式
url : "./csdn/ProvinceAction_select.action?time="
+ new Date().getTime(), // 設定請求的url地址
dataType : "json", // 伺服器預返回的資料格式,改屬性有:html、text、xml、script等多種值型別
success : function(data, textstatus) { // 成功返回的回撥函式
// 獲取所有的省
var jsonPros = data.provinces;
// 遍歷省
for ( var i = 0; i < jsonPros.length; i++) {
// 得到具體的省
var jsonPro = jsonPros[i];
// 建立一個option的jQuery物件
var $proOpt = $("<option></option>");
// 為option物件設定屬性
$proOpt.attr("value", jsonPro.pid);
$proOpt.text(jsonPro.pname);
// 把建立的option省節點新增到省的select節點中
$("#province").append($proOpt);
}
},
error : function(xhr, textstatus, errorThrown) { // 失敗返回的回撥函式
}
});
// jQery的第二個案例
// 當省發生變化的時候出發的事件
$("#province").bind(
"change",
function() {
// 清空資料
$("#city")[0]=1;
$("#country")[0]=1;
// 對ajax的進一步封裝
// 傳遞的資料
var pid = $("#province").val(); //
$.get("./csdn/CityAction_select.action?time="
+ new Date().getTime(), // url請求的luj
{
pid : pid
}, // 請求傳遞的引數
function(data) { // 返回成功時的回撥函式
// 得到所有的市
var jsonCities = data.cities;
for ( var i = 0; i < jsonCities.length; i++) {
// 得到具體的市
var jsonCity = jsonCities[i];
// 建立一個option的jQuery物件
var $cityOpt = $("<option></option>");
// 為option物件設定屬性
$cityOpt.attr("value", jsonCity.cid);
$cityOpt.text(jsonCity.cname);
// 把建立的option節點省節點新增到市的select節點中
$("#city").append($cityOpt);
}
}, "json"); // 返回的資料型別
});
// jQery的第三個案例
$("#city").change(
function() {
// 清空資料
$("#country")[0]=1;
var cid = $("#city").val();
// post方法傳送ajax請求
$.post("./csdn/CountryAction_select.action?time="
+ new Date().getTime(), {
cid : cid
}, function(data) {
// 得到所有的市
var jsonCountries = data.countries;
for ( var i = 0; i < jsonCountries.length; i++) {
// 得到具體的城鎮
var jsonCountry = jsonCountries[i];
// 建立一個option的jQuery物件
var $countryOpt = $("<option></option>");
// 為option物件設定屬性
$countryOpt.attr("value", jsonCountry.tid);
$countryOpt.text(jsonCountry.tname);
// 把建立的option節點省節點新增到城鎮的select節點中
$("#country").append($countryOpt);
}
}, "json");
});
});
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="www/csdn/project/resource/struts-constant.xml" />
<package name="csdn" namespace="/csdn" extends="json-default">
<action name="ProvinceAction_*" class="www.csdn.project.action.ProvinceAction"
method="{1}">
<result type="json">
<!-- 改配置引數為關鍵,如果不設定改引數json物件會預設載入城市類導致出現session已關閉的錯誤 -->
<param name="includeProperties">provinces\[\d+\]\.pid,provinces\[\d+\]\.pname</param>
</result>
<result name="input">/index.jsp</result>
</action>
<action name="CityAction_*" class="www.csdn.project.action.CityAction"
method="{1}">
<result type="json">
<param name="includeProperties">cities\[\d+\]\.cid,cities\[\d+\]\.cname</param>
</result>
<result name="input">/index.jsp</result>
</action>
<action name="CountryAction_*" class="www.csdn.project.action.CountryAction"
method="{1}">
<result type="json">
<param name="includeProperties">countries\[\d+\]\.tid,countries\[\d+\]\.tname</param>
</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
相關文章
- js中css樣式相容各個瀏覽器寫法JSCSS瀏覽器
- gb2312簡繁轉換js相容各種瀏覽器JS瀏覽器
- 手機瀏覽器通過Scheme跳轉APP,相容各種手機瀏覽器瀏覽器SchemeAPP
- 網頁內容複製貼上(三種方案 相容多種瀏覽器)網頁瀏覽器
- (16)CSS 擴充:① 瀏覽器相容 | CSSCSS瀏覽器
- SSH三大框架使用谷歌瀏覽器上傳檔案瀏覽器崩潰框架谷歌瀏覽器
- 利用 Powershell 編寫簡單的瀏覽器指令碼瀏覽器指令碼
- 編寫一個簡易計時器程式(edu)
- [外掛擴充套件]jQuery二維碼外掛0.2【更新瀏覽器相容】套件jQuery瀏覽器
- astro中瀏覽器端使用lit編寫的componentsAST瀏覽器
- 使用KVM的API編寫一個簡易的AArch64虛擬機器API虛擬機
- 實現一個簡單的在瀏覽器執行Dotnet編輯器瀏覽器
- IE瀏覽器相容瀏覽器
- 9:瀏覽器相容瀏覽器
- 在瀏覽器中使用ESModules,超級簡單瀏覽器
- 各種線上jquery引用jQuery
- 瀏覽器相容性瀏覽器
- 關於瀏覽器相容瀏覽器
- forEach()相容所有瀏覽器瀏覽器
- Jmeter 上傳檔案時勾選與瀏覽器相容的頭後編碼依舊使用了 Content-Transfer-EncodingJMeter瀏覽器Encoding
- 模擬瀏覽器與伺服器互動(簡易TomCat框架)瀏覽器伺服器Tomcat框架
- 寫一個簡單的支援Node.js&瀏覽器的自定義事件庫Node.js瀏覽器事件
- 簡易筆記:瀏覽器快取策略筆記瀏覽器快取
- 使用chrome瀏覽器驅動自動開啟瀏覽器Chrome瀏覽器
- 使用瀏覽器擴充套件篡改網頁中的 JS 檔案瀏覽器套件網頁JS
- 動畫: 一個瀏覽器是如何工作的?動畫瀏覽器
- react和vue專案中去掉瀏覽器url上的"#"號ReactVue瀏覽器
- 如何在瀏覽器上新增一鍵式填寫瀏覽器
- 金三銀四,那瀏覽器相容你知多少?瀏覽器
- 精通前端 polyfill ,相容各瀏覽器執行E6語法前端瀏覽器
- 如何編寫一個簡單的Linux驅動(三)——完善裝置驅動Linux
- 導航的瀏覽器相容問題瀏覽器
- 思否開源專案推介丨簡閱:提升閱讀體驗的瀏覽器擴充套件瀏覽器套件
- goioc:一個使用 Go 寫的簡易的 ioc 框架Go框架
- 使用Go寫一個簡易的MVC的Web框架GoMVCWeb框架
- 擴充套件推薦:laravel線上程式碼編輯器擴充套件包(純瀏覽器版的vscode)套件Laravel瀏覽器VSCode
- [譯]用Golang編寫一個簡易聊天室Golang
- edge瀏覽器相容性設定在哪 新版edge瀏覽器相容模式怎麼弄瀏覽器模式
- Ant-design-vue 專案實戰筆記 (後繼將繼續補充)Vue筆記