天天看點

ajax的通用寫法,ajax的jquery寫法和原生寫法

一、ajax的簡介

Ajax被認為是(Asynchronous(異步) JavaScript And Xml的縮寫)。現在,允許浏覽器與伺服器通信而無須重新整理目前頁面的技術都被叫做Ajax.

同步是指:發送方發出資料後,等接收方發回響應以後才發下一個資料包的通訊方式。

異步是指:發送方發出資料後,不等接收方發回響應,接着發送下個資料包的通訊方式 。

二、ajax的缺陷

AJAX大量使用了JavaScript和AJAX引擎,而這個取決于浏覽器的支援。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支援,Mozilla雖然也支援AJAX,但是提供XMLHttpRequest的方式不一樣。是以,使用AJAX的程式必須測試針對各個浏覽器的相容性。

AJAX更新頁面内容的時候并沒有重新整理整個頁面,是以,網頁的後退功能是失效的;有的使用者還經常搞不清楚現在的資料是舊的還是已經更新過的。這個就需要在明顯位置提醒使用者“資料已更新”。

對流媒體的支援沒有FLASH好。

一些手持裝置(如手機、PDA等)現在還不能很好的支援Ajax。

form資料的序列化:

$(‘#submit‘).click(function(){

$(‘#form‘).serialize(); //會根據input裡面的name,把資料序列化成字元串;eg:name=yang

$(‘#form‘).serializeArray(); //會根據input裡面的name,把資料序列化成數組;eg:[object]

//注意:沒有name會擷取不到值

//下面兩種不是jQuery的方法

JSON.parse() //json字元串轉化為json對象

JSON.stringify() //json對象轉化為json字元串

});

三、ajax的四種type類型:

1、GET請求會向資料庫發索取資料的請求,進而來擷取資訊,該請求就像資料庫的select操作一樣,隻是用來查詢一下資料,不會修改、增加資料,不會影響資源的内容,即該請求不會産生副作用。無論進行多少次操作,結果都是一樣的。

2、與GET不同的是,PUT請求是向伺服器端發送資料的,進而改變資訊,該請求就像資料庫的update操作一樣,用來修改資料的内容,但是不會增加資料的種類等,也就是說無論進行多少次PUT操作,其結果并沒有不同。

3、POST請求同PUT請求類似,都是向伺服器端發送資料的,但是該請求會改變資料的種類等資源,就像資料庫的insert操作一樣,會建立新的内容。幾乎目前所有的送出操作都是用POST請求的。

4、DELETE請求顧名思義,就是用來删除某一個資源的,該請求就像資料庫的delete操作。

簡單的說就是

get了解為查詢 delete就是删除 post就是新增 put就是更新資料

四、ajax的原生寫法:

window.onload = function(){//XMLHttpRequest 對象 是ajax的基礎

//var xml = new XMLHttpRequest() 建立對象

//IE5/IE6 不支援XMLHttpRequest() 建立ActiveXObject()

varxml;if(window.XMLHttpRequest) {

xml= new XMLHttpRequest(); //建立對象

}else{

xml= new ActiveXObject("Microsoft.XMLHTTP"); //IE5/IE6

};//發送到伺服器 XMLHttpRequest() open() send()

xml.open("get","http://localhost:8080/info",true);

xml.send();//xml.setRequestHeader(‘Content-type‘,‘applicateion/json‘); //修改請求頭部

//xml.send(JSON.stringify({name:‘123‘,id:1})); //xml.send(string);string 用于post請求

//響應

xml.onreadystatechange = function(){if(xml.readyState ==4 && xml.status==200){ //判斷readyState/status狀态

console.log(xml.responseText); //擷取字元串形式的響應資料

}

}

}

五、ajax的jquery寫法:

$.ajax({

type:"POST", //請求方式 get查詢 post增加 put修改 delete删除

url:"http://localhost:8080/info",//請求路徑

async:true, //或false 是否異步

data:{name:‘ycg‘,age:25},

timeout:5000,//逾時時間

dataType:‘json‘, //傳回的資料格式:json/xml/html/script/jsonp/text

beforeSend:function(xhr){

console.log(‘發送前‘);

}

success:function(data,textStatus,jqXHR){

console.log(‘成功‘);

},

error:function(error){

console.log(‘錯誤‘);

},

complete:function(){

console.log(‘結束‘);

}

})