ajax異步刷新請求數據


AJAX是與服務器交換數據的藝術,它在不重載全部頁面的情況下,實現了對部分網頁的更新。AJAX = 異步 JavaScript 和 XML(Asynchronous JavaScript and XML)。簡短地說,在不重載整個網頁的情況下,AJAX 通過后台加載數據,並在網頁上進行顯示。
原生的ajax是比較難寫的,對底層原理要求相對較高,而jQuery經過封裝,將ajax封裝了,使用起來就比較簡單了,有三種方式:$.get(),$.post(),$.ajax()

1.第一種方式 $.get()

語法格式:$.get(URL,callback); //url為要請求的地址,callback為回調函數

$("button").click(function(){
  $.get("demo_test.asp",function(data,status){  //data為后台返回的數據,status為狀態碼
    alert("Data: " + data + "\nStatus: " + status);
  });
});
<button id="button">點擊更換內容</button>

2.第二種方式$.post()

語法格式:$.post(URL,data,callback); //url為要請求的地址 data是key-value形式的參數 callback為回調函數

 $("button").click(function(){
    $.post("/example/jquery/demo_test_post.asp",
    {
      name:"Donald Duck",
      city:"Duckburg"
    },
    function(data,status){
      alert("數據:" + data + "\n狀態:" + status);
    });
  });

3.jQuery中的ajax()方法

ajax()方法通過HTTP請求加載遠程數據。該方法是jQuery底層AJAX實現。$.ajax()返回其創建的XMLHttpRequest對象。大多數情況下無需直接操作該函數,除非你需要操作不常用的選項,以獲得更多的靈活性。最簡單的情況下,$.ajax()可以不帶任何參數直接使用。例如:$.ajax({//這里面進行一些操作});
$.ajax()方法也可以設置一些選項進行一些操作限制,例如設置type請求類型,asnyc是否異步訪問等等。
例如一個頁面點擊select下拉框時觸發的一個請求,下拉框的值由后台傳輸過來然后顯示在頁面上的例子:

$.ajax({
                type: 'post', //設置請求類型為post
                url: '../Report/takeou',//請求后台的url地址
                data: '',//請求參數,是key-value形式的,如 {name:"jason"}
                success: function (data) {  //請求成功后的回調函數,data為后台返回的值
                    var obj = strToJson(data);
                    var strone = "";
                    var str = "";
                    str += "<option value=''>請選擇</option>";
                    for (var i = 0; i < obj.length;i++){
                        var o = obj[i];
                        str += "<option value=" + o.groupid +">"+o.ou+"</option>";
                    }
                    $('#groupid').append(str); //向頁面追加select的option選項
                }
            });

4.$.ajax()方法的選項設置

$.ajax({
      async:true 默認設置下,所有請求均為異步請求。如果需要發送同步請求,請將此選項設置為 false。注意,同步請求將鎖住瀏覽器,用戶其它操作必須等待請求完成才可以執行。
      cache:true 默認值: true,dataType 為 script 和 jsonp 時默認為 false。設置為 false 將不緩存此頁面。
      contentType:"value" 默認值: "application/x-www-form-urlencoded"。發送信息至服務器時內容編碼類型。默認值適合大多數情況。如果你明確地傳遞了一個 content-type 給 $.ajax() 那么它必定會發送給服務器(即使沒有數據要發送)。
      data:key-value形式 發送到服務器的數據。將自動轉換為請求字符串格式。GET 請求中將附加在 URL 后。查看 processData 選項說明以禁止此自動轉換。必須為 Key/Value 格式。如果為數組,jQuery 將自動為不同值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換為 '&foo=bar1&foo=bar2'。
      success:請求成功后的回調函數。由服務器返回,並根據 dataType 參數進行處理后的數據;描述狀態的字符串。
      type:"post" 默認值: "GET")。請求方式 ("POST" 或 "GET"), 默認為 "GET"。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支持。
      url:"" 需要請求的目標地址
      dataType:"" 
      預期服務器返回的數據類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 信息來智能判斷,比如 XML MIME 類型就被識別為 XML。在 1.4 中,JSON 就會生成一個 JavaScript 對象,而 script 則會執行這個腳本。隨后服務器端返回的數據會根據這個值解析后,傳遞給回調函數。可用值:
        "xml": 返回 XML 文檔,可用 jQuery 處理。
        "html": 返回純文本 HTML 信息;包含的 script 標簽會在插入 dom 時執行。
        "script": 返回純文本 JavaScript 代碼。不會自動緩存結果。除非設置了 "cache" 參數。注意:在遠程請求時(不在同一個域下),所有 POST 請求都將轉為 GET 請求。(因為將使用 DOM 的 script標簽來加載)
        "json": 返回 JSON 數據 。
        "jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。
        "text": 返回純文本字符串	
})
最常用的就是 type、url、data、success了。

5.ajax涉及到的回調函數

如果要處理$.ajax()得到的數據,則需要使用回調函數:beforeSend、error、dataFilter、success、complete。

  • beforeSend
    在發送請求之前調用,並且傳入一個 XMLHttpRequest 作為參數。
  • error
    在請求出錯時調用。傳入 XMLHttpRequest 對象,描述錯誤類型的字符串以及一個異常對象(如果有的話)
  • dataFilter
    在請求成功之后調用。傳入返回的數據以及 "dataType" 參數的值。並且必須返回新的數據(可能是處理過的)傳遞給 success 回調函數。
  • success() //最常用的
    當請求之后調用。傳入返回后的數據,以及包含成功代碼的字符串。
  • complete
    當請求完成之后調用這個函數,無論成功或失敗。傳入 XMLHttpRequest 對象,以及一個包含成功或錯誤代碼的字符串。

更多詳情請參考:https://www.w3school.com.cn/jquery/ajax_ajax.asp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM