本篇文章實現了用jQuery的AJax實現非同步訪問和非同步載入,具有一定的參考價值,感興趣的小夥伴們可以參考一下。
【非同步訪問】
用一個例子用以說明:點擊按鈕,將input內使用者輸入的資料發送給服務端,並將結果返回給頁面。
首先是html承載內容:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>AJax非同步訪問</title> <script src="js/jquery-2.1.3.min.js"></script> <script src="js/ajaxDemo.js"></script> </head> <body> <input type="text" id="nameValue"> <br/> <button id="btn">提交</button> <p> 結果:<span id="result"></span> </p> </body> </html>
設定管理員:Server.php
<?php if(isset($_GET['name'])){ echo "姓名:".$_GET['name']; }else{ echo "參數錯誤"; }
ajaxDemo.js實現AJax非同步訪問:
$(document).ready(function(){ $("#btn").on("click",function(){ //在與伺服器通訊較慢時給使用者提示資訊 $("#result").text("資料請求中,請稍後..."); //向伺服器發送請求(get、post) $.get("Server.php",{name:$("#nameValue").val()},function(data){ $("#result").text(data); }).error(function(){ //當伺服器出現異常時 $("#result").text("伺服器正在維護") }) }) })
實現效果:
【非同步載入】
主要用到load()方法以及getScript()方法,具體以一個例子說明:
在現有html檔案中載入一個擬好的片段,以及在片段載入完成之前阻止使用者進一步操作的彈出框。
首先是現有html代碼,無任何內容:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>AJax非同步載入</title> <script src="js/jquery-2.1.3.min.js"></script> <script src="js/main.js"></script> </head> <body> </body> </html>
擬一個js檔案getData.js寫一個函數最簡陋的彈出框提示為例:
function getData(){ alert("片段的內容引自新浪體育"); } 擬一個片段box.htm,承載要載入的片段內容:<div> <h4>中超-耿曉峰失誤拉蒙兩球 申花7輪首敗1-4綠城</h4> <p> 北京時間8月11日晚19點35分,2015年中超聯賽第22輪在杭州黃龍體育場開始一場較量, 由杭州綠城迎戰上海申花。上半場第7分鐘陳柏良突然冷射,導致耿曉峰接球脫手造成失球, 這是中華台北球員(陳昌源在比利時土生土長)在中超聯賽進的首球。 第12分鐘申花隊呂征禁區右路左腳淩空射門扳平比分。第25分鐘阿甘在底線附近把球送入禁區, 拉蒙頭槌得分,第37分鐘阿甘單刀赴會打入一球。 第60分鐘阿甘頭槌擺渡,拉蒙跟進射門梅開二度。最終杭州綠城4比1戰勝上海申花。 </p> </div>
最後寫main.js來非同步載入getData.js以及box.htm到現有html檔案中。
$(document).ready(function(){ //非同步載入js檔案 $.getScript("js/getData.js").complete(function(){ getData(); }) //非同步載入片段 $("body").text("載入中...") $("body").load("box.htm",function(url,status,c){ if(status=="error"){ $(this).text("片段載入失敗"); } }); })
最後效果:
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。