成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? jQuery與Ajax以及序列化
全站頭部文字 我要出現在這里
jQuery與Ajax以及序列化 626 2024-03-12   

關于AJAX

所謂Ajax,全名Asynchronous JavaScript and XML。(也就異步的JS和XML)

簡單點來講就是不刷新頁面來發送和獲取數據,然后更新頁面。

Ajax的優勢

•無需插件支持
•優秀的用戶體驗
•提高web程序的性能
•減輕服務器和帶寬的負擔

Ajax的不足

•瀏覽器兼容不足
•破壞瀏覽器前進和后退按鈕的正常功能
•對搜索引擎的支持不足
•開發和調試工具的 缺乏

好吧,這些都是幾年前的不足。技術的發展很快,這些不足也會慢慢彌補,起碼現在調試Ajax并不難。

Ajax的核心是XMLHttpRequest對象,它是Ajax實現的關鍵。

傳統的實現Ajax的例子就不舉了,太蛋疼了,我都沒記,網上一搜一大堆。

關于jQuery中的Ajax

$.ajax()方法是封裝了最原始的js的Ajax方式。

load(),$.get(),$.post()是封裝了$.ajax()得來

$.getScript()和$.getJSON()是進一步的封裝。

•load()方法 •用處:載入遠程HTML代碼并插入DOM中,通常用于獲取靜態的數據文件,結構為:load(url [,data] [,callback])。 •url為請求的地址
•data可選,為發動到服務器的參數對象
•callback為回調函數,請求不論成功還是失敗都調用
•載入頁面的時候甚至可以在地址里加上篩選

$("#resDiv").load("test.html .myClass");//這個div里只載入test.html頁面里面 樣式為myClass 的元素


//舉一個完整的例子
$(function(){
$("#resDiv").load("text.php",{name:"troy",textInfo:"hello"},function(responseText,textStatus,XMLHttpRequest){
//responseText:請求返回的內容
//textStatus: 請求狀態:success、error、notmodiffied、timeout 4種 
//XMLHttpRequest: XMLHttpRequest對象
});
}); 

•$.get()方法 •明顯的看到調用的方式不同,所以說這函數是jQuery的全局函數。而此前的方法和load()這種都是對jQuery對象進行操作
•$.get()方法使用GET方式來進行異步請求,結構為:$.get(url [,data] [,callback] [,type]) •前三個參數就不說了,唯一不同的是callback只有請求成功才調用
•type參數為服務器端返回內容的格式,包括xml,html,script,json,text和_default
•例子

$("#send").click(function()
$.get("get1.php"
,{
username:$("#username").val(),
content:$("#content").val()
}
,function(data,textStatus){
//data: 返回的內容,可以是XML文檔、JSON文件、HTML片段
//textStatus: 請求狀態:success、error、notmodiffied、timeout 4種
}
)
}) 

•$.post()方法 •它與get方法的玩法一樣,不過一個是get方式,一個是post方式。
•$.getScript()方法 •有的時候頁面初次加載沒必要獲取所有的腳本,所以jQuery提供了getScript這種方法來直接加載js文件。
•例子

$('#send').click(function(){
$.getScript('test.js',function(){
//do something 這個時候腳本已經加載了,不需要再對js文件進行處理
});
}); 

• $.getJSON()方法 •用于加載JSON文件,用法同上,只不過返回的json數據而已

$('#send').click(function(){
$.getJSON("myurl",function(data){
var html="";
$.each(data,function(commentIndex,comment){
html+=commentIndex+":"+comment['username']+";";
})
alert(html);
})
});
//注意一下ecch這種玩法,同樣是個全局函數。他的回調函數中,第一個參數為成員的索引,第二個為變量和內容 

順便擴展一下,跨域訪問的JSONP

$("#send").click(function(){
$.getJSON("http://www.某網站.com/services/getMyCmpJson?tags=car&tagmode=any&format=json&jsoncall back=?"
,function(data){
//某些操作
}
)
})

//JSONP是個非官方協議,采用json與<script>標記結合的方式,主要用于web應用程序跨域

•$.ajax()方法 •這個方法是jQuery最底層的Ajax實現,所以理所當然更加強大以及復雜。

雖然它只有一個參數,但是這個參數對象包含的屬性非常多,不過都是可選的。以下列出所有屬性: • url:默認當前頁地址,也可以手動寫請求的地址

•type:默認為GET,也可以寫POST
•timeout:設置請求超時時間(毫秒)
•data:發送的數據
•dataType:預期服務器返回的數據類型。
•beforeSend:發送前的調用的函數,如果次函數返回false將取消本次ajax請求。

function(XMLHttpRequest){//XMLHttpRequest是唯一的參數
this;//調用本次Ajax請求時傳遞的options參數
} 

•complete:請求完后,無論成功還是失敗都調用。

function(XMLHttpRequest,textStatus){//textStatus描述成功請求類型
this;//調用本次Ajax請求時傳遞的options參數
}

•success:請求成功后的回調函數

function(data,textStatus){//data為成功返回的數據
this;//調用本次Ajax請求時傳遞的options參數
}

•error:請求失敗調用的函數

function(XMLHttpRequest,textStatus,errorThrown){
// textStatus為錯誤信息,errorThrown為捕獲的錯誤對象,通常只有其中一個包含信息
this;//調用本次Ajax請求時傳遞的options參數
} 

•global:默認為true。表示是否觸發全局Ajax事件。
•序列化元素 •serialize()方法 •它能夠將DOM元素內容序列化為字符串

//不僅可以序列化整個表單,也可以序列化單個元素,并且都是自動編碼過的
$.post("myurl",$("#form1").serialize(),function(data,textStatus){
$("#resText").html(data);
})

•serializeArray()方法 •它能夠將DOM元素內容序列化為JSON格式
•$.param()方法 •這是serialize方法的核心,用來對一個數組或對象按照鍵值對進行序列化

var obj={a:1,b:2,c:3};
var k=$.param(obj);//輸出為a=1&b=2&c=3 

•jQuery中的Ajax全局事件 •ajaxStart()方法:當Ajax請求開始就觸發
•ajaxStop()方法:當Ajax請求結束就觸發

<div id="loading">加載中...</div>
$("#loading").ajaxStart(function(){
$(this).show();//ajax開始請求就顯示加載中
});
$("#loading").ajaxStop(function(){
$(this).hide();//ajax開始結束就隱藏加載中
}); 

•ajaxComplete():當Ajax請求完成就觸發
•ajaxError():當Ajax請求發生就觸發,捕捉到的錯誤可以作為最后一個參數傳遞
•ajaxSend():當Ajax請求發送前就觸發
•ajaxSuccess():當Ajax請求成功就觸發
•如果想使某個Ajax請求不受全局事件的影響,可以在$.ajax中將global屬性設置為false,這個在前面已經講過了。當然也可以在ajax請求前:

$.ajaxPrefilter(function(options){//每次發送前請求
options.global=true;
})

好吧,寫完了。最后順帶提一下,setTimeout("doMethod()",4000);為4s后執行doMethod這個函數。

//一個簡單的定時發送功能
function updateMsg(){
$.post("myurl",{time:timestamp},function(xml){
//do something
});
setTimeout("updateMsg()",4000);
}


主站蜘蛛池模板: 丁尼| 天上人间电影| 爱情与灵药 电影| 礼佛三拜正确动作视频| 低糖食物一览表| lol小孩子不能看的动画视频| 山村老尸图片| 17岁韩国电影完整版观看免费| 许多组织都有自己的价值标准和行为理念 | 虐猫视频哪里可以看| 水果篮子第二季全集| 春闺梦里人电影在线观看| 我的朋友作文| starstruck| 天狂传说之巴啦啦小魔仙合集| 幻乐森林演员表| 王心凌照片| 最近2019中文字幕第一页视频| 南来北往连续剧免费观看完整版| 美女写真116| 神宫寺勇太| 除暴安良电视剧免费观看| 《月夜》电影| 服务群众方面整改成效| 视频三级| 女村长| 男孩变女孩tg动画| 南方车站的聚会| 信我者无需多言,不信我者| 回到十八岁| 相声剧本(适合学生)| 林美娇最惊艳的十部电影| 补铁最好水果第一名| 邓为个人资料及简历| department什么意思| 招领启事的格式| 台风电影| 街女电影| 老阿姨视频| 韩义生| 美女拉屎|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103