ajax中get和post的提交、卻別、錯誤處理以及注意事項

<!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

相關文章
相關標籤/搜索