<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body>
$.get和$.post的不一樣
一、get經過url提交的,post是經過http消息實體提交的
二、get提交大小限制爲2kb,post不限制
三、get提交會被緩存下來,有安全隱患,post沒有
$.get 和 $.post的幾種傳參方式
一、在url後面直接問號傳參: test.php?age=20
二、以字符串鍵值對的方式傳參: 'age=20'
三、以對象鍵值對的方式傳參: {age:20}
$.get 以上三種方式都支持,可是$.post和$.ajax只支持後2種寫法
具體demo:
一、$.get('test.php?age=20',function(result){
alert(result)
})
二、$.get('test.php','age=20',function(result){
alert(result)
})
三、$.get('test.php',{age:20},function(result){
alert(result)
})
3、getScript 通常就是引入一個js文件
$.getScript('demo.js') 便可
四:getScript 請求一個json文件,沒必要要指定返回的數據類型,並且若是制定了非json的type類型如type:html ,因爲安全性高一點也不會返回html格式的數據
5、在用ajax 提交表單的時候能夠用表單序列化獲取表單的傳參內容,並且傳參的形式是字符串鍵值對,而且還會對url進行編碼
$('form').serialize();
如:$.ajax({
type:'POST',
url:'text.php',
data: $('form').serialize(),
success:function(response,status,xhr){
dosomething...
}
})
五-1;在一下html中能夠用decodeURLComponent對序列化的數據進行解碼
<form>
<input type="checkbox" name="sex" value="男" id="">
<input type="checkbox" name="sex" value="女" id="">
</form>
<div id="box"></div>
<script>
$('form input[name=sex]').click(function(){
$('#box').html(decodeURLComponent($(this).serialize()))
})
</script>
5-2,以上的例子能夠用serializeArray()可將數據格式化爲json格式
六;ajaxSetup 是對ajax進行初始化,應用場景當多個ajax重複用到某些數據的時候能夠分裝起來如:
$.ajaxSetup({
type:'POST',
url:'text.php',
data:'{}'
});
$('form :submit').click(function(){
$.ajax({
success:function(response,status,xhr){
}
})
});
7.$.param()方法可對複雜的json進行字符串鍵值對解析r
進階:
八、$.ajaxstart()和$.ajaxStop()放置加載時間過長處理
在jq1.8版本後必須綁定在document上如:
$(document).ajaxStart(function(){
$('.loading').show()
}).ajaxStop(function(){
$('.loading').hide()
});
php
8-1 若是加載超時,能夠用timeout設置超時限制html
===============
$.ajax進階
一、加載請求
$.ajaxStart() 、$.ajaxStop 能夠在對用戶等待時間加載loading圖片
二、錯誤處理
$.ajax的錯誤處理 能夠在本身當前添加error方法,參數是(xhr,status,statusText) 如:
2-1: $.ajax的error處理
$.ajax({
url:'www.seogjgsdggd.com/test.php',
type:'POST',
data:'age=20',
error:function(xhr,status,statusText){
alert(xhr.status)
}
});
2-1:$.post的error錯誤處理,添加連綴的局部方法error,參數是(xhr,errorText,errorType)如:
$.post('test.php','age=20',function(response,status,xhr){
alert(response+"//"+xhr.status)
}).error(function(xhr,errorText,errorType){
alert('錯誤')
});
也能夠用全局的ajaxError方法如(1.8版本建議吧事件綁定在document上),可是參數有所不一樣(event,xhr,settings,errorType) 如:
$(document).ajaxError(function(event,xhr,settings,errorType){
event,xhr,settings都是對象,event通常就用(type,target)屬性,settings通常就用(url,type);
});
3/ 請求全局事件有 $.ajaxstart(),$.ajaxstop()、$.ajaxError(),
$.ajaxSuccess(),$.ajaxComplete,$.ajaxSend()
前三個是請求時出發的全局事件,
$.ajaxSuccess() 對應一個局部方法 .success();
$.ajaxComplete()對應一個局部方法 .complete();
$.ajaxSend()沒有對應的局部方法,只有屬性beforeSend
例子:
$(document).ajaxSend(function(){
alert(發送請求以前);
}).ajaxComplete(function(){
alert(請求成功和失敗以後都會出現,是出如今成功或者失敗的後面);
}).ajaxSuccess(function(){
alert(請求成功後);
}).ajaxError(function(){
alert(請求失敗後);
})
$.post('test.php',$('form').serialize()).success(function(){
alert(請求成功後);
}).complete(function(){
alert(請求完成後);
}).error(function(){
alert(請求失敗後);
})java
$.ajax({
url:'test.php',
type:'POST',
data:$('form').serialize(),
success:function(response,status,xhr){
alert(請求成功後);
},
complete:function(){
alert(請求完成後);
},
error:function(xhr,errorText,errorType){
alert(請求錯誤後);
},
beforSend:function(){
alert(請求以前);
}
})
ajax
</body>
</html>json