jQuery中$.ajax $.get $.post 和$.getJSON的區別和用法

首先,.get和.get和.post其實都是.ajax的一種,在.ajax的一種,在.ajax中有一個type屬性,專門用來指定是get請求還是post請求的。如下: 
$.ajax({ 
url:”路徑”, 
type:”post/get”, 
datatype:”json”, 
//成功的回調函數 
success:function(data){ 
alert(“回調函數成功了”); 
}, 
//失敗的回調函數 
error:function(){ 
alert(“服務器請求失敗”); 
},

舉個栗子:

<button onclick="sendJson()">原生Json數據交互測試</button>
<button onclick="sendJson2()">Json數據交互測試</button>
</body>
<script type="text/javascript">
 function sendJson(){
	 $.ajax({
		 url:"${pageContext.request.contextPath }/item/jsontest.action",
		 type:"post",
		 data:'{"id":1,"name":"李思思","price":2300,"createtime":"2017-09-09 12:23:09"}',
		contentType:"application/json;charset=utf-8",
		success:function(data){
			alert(data.id+":"+data.name);
		}
 
	 })
 }
 function sendJson2(){
	 
	 $.post("${pageContext.request.contextPath }/item/jsontest2.action",
			 {"id":1,"name":"張三","createtime":"2017-09-09 12:23:09"},function(data){
		 alert(data.name);
	 },"json")
 }
</script>

//發送請求前調用,可以放一些“正在加載”之類的話 
beforeSend:function(){ 
alert(“正在加載”); 

}); 
所以無論是get請求還是post請求,都可以用ajax來寫。 
下面我們來說一下get和post的區別: 
1.安全性:get是通過http協議的header發送請求,所以會將參數拼接在地址欄中,所以安全性很差; 
post是通過http協議的body發送請求,地址欄中並不會出現,所以相對安全; 
還有一點,用get方法發送請求會被客戶端瀏覽器緩存,通過查看歷史記錄可以查看到用戶信息,所以非常不安全。 
2.傳送大小:get只能傳送2kb,而post一般不受限制 
3.效率:get效率高,post效率低 
4.get就是爲了從服務器得到數據,而post則是發送數據 

 

.get()方法使用GET方式來進行異步請求,它的語法結構爲:.get( url [, data] [, callback] ) 
解釋一下這個函數的各個參數: 
url:string類型,ajax請求的地址。 
data:可選參數,object類型,發送至服務器的key/value數據會作爲QueryString附加到請求URL中。 
callback:可選參數,function類型,當ajax返回成功時自動調用該函數。

 

.post()方法使用POST方式來進行異步請求,它的語法結構爲: 
.post(url,[data],[callback],[type])這個方法和.post(url,[data],[callback],[type])這個方法和.get()用法差不多,唯獨多了一個type參數,那麼這裏就只介紹type參數吧,其他的參考上面.get()的。type:type爲請求的數據類型,可以是html,xml,json等類型,如果我們設置這個參數爲:json,那麼返回的格式則是json格式的,如果沒有設置,就和.get()的。type:type爲請求的數據類型,可以是html,xml,json等類型,如果我們設置這個參數爲:json,那麼返回的格式則是json格式的,如果沒有設置,就和.get()返回的格式一樣,都是字符串的。 
$.post(“/login”,{id:’123’,name:’小明’},function(data){   },"json")

 

下面我們來說一下getJSON(): 
getJSON()和get是一樣的,都是get請求,這就決定了,發送的data數據量不能太多,否則造成url太長接收失敗(getJSON方式是不可能有post方式遞交的)。 
區別是,getJSON專門請求json數據的,而且getJSON可以實現跨域請求。語法格式如下: 
getJSON(url,[data],[callback]) 
url:string類型, 發送請求地址 
data :可選參數, 待發送 Key/value 參數 ,同get,post類型的data 
callback :可選參數,載入成功時回調函數,同get,post類型的callback

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章