1. 程式人生 > >jQuery ajax資料請求

jQuery ajax資料請求

定義和用法

ajax() 方法通過 HTTP 請求載入遠端資料。
該方法是 jQuery 底層 AJAX 實現。大多數情況下你無需直接操作該函式,除非你需要操作不常用的選項,以獲得更多的靈活性。

var url = "/test/check";
    $.ajax({
        url: url,
        type: "post",//預設值: "GET")。請求方式 ("POST" 或 "GET")。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支援。
        data: {
            name:"張三",
            age:22
}, timeout:15000,//設定請求超時時間(毫秒)。此設定將覆蓋全域性設定。 cache: false,//是否快取,預設值: true,dataType 為 script 和 jsonp 時預設為 false async : false,//是否非同步,預設為true dataType: "json",//請求資料型別 beforeSend:function(XMLHttpRequest){ //開始請求之前 alert("正在獲取資料..."); }, success: function
(data ,textStatus, jqXHR) {
alert(data); }, complete:function(XMLHttpRequest,textStatus){ //請求完成 // textStatus 可能為:null、'success'、 'notmodified'、 'error'、 'timeout'、 'abort'或'parsererror'等 if(textStatus=='timeout'){//判斷是否超時 var
xmlhttp = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp"); xmlhttp.abort();//終止當前請求 alert("網路超時!");     } }, error:function (XMLHttpRequest, textStatus, errorThrown) { alert("請求失敗!"); } });

引數

type

型別:String
預設值: “GET”)。請求方式 (“POST” 或 “GET”), 預設為 “GET”。注意:其它 HTTP 請求方法,如 PUT 和 DELETE 也可以使用,但僅部分瀏覽器支援。

data

型別:String
傳送到伺服器的資料。將自動轉換為請求字串格式。GET 請求中將附加在 URL 後。必須為 Key/Value 格式。如果為陣列,jQuery 將自動為不同值對應同一個名稱。如 {foo:[“bar1”, “bar2”]} 轉換為 ‘&foo=bar1&foo=bar2’。

dataType

型別:String
預期伺服器返回的資料型別。如果不指定,jQuery 將自動根據 HTTP 包 MIME 資訊來智慧判斷,比如 XML MIME 型別就被識別為 XML。可用值:

  • “xml”: 返回 XML 文件,可用 jQuery 處理。
  • “html”: 返回純文字 HTML 資訊;包含的 script 標籤會在插入 dom 時執行。
  • “script”: 返回純文字 JavaScript 程式碼。不會自動快取結果。除非設定了 “cache” 引數。
  • “json”: 返回 JSON 資料 。
  • “jsonp”: JSONP 格式。使用 JSONP 形式呼叫函式時,如 “myurl?callback=?” jQuery將自動替換 ? 為正確的函式名,以執行回撥函式。
  • “text”: 返回純文字字串

async

型別:Boolean
預設值: true。預設設定下,所有請求均為非同步請求。如果需要傳送同步請求,請將此選項設定為 false。同步請求將鎖住瀏覽器,使用者其它操作必須等待請求完成才可以執行。

回撥方法

beforeSend()

傳送請求之前回調的方法,一般可用於防止重複資料請求、實現Toast效果等:

beforeSend: function () {
    // 禁用按鈕防止重複提交
    $("#submit").attr({ disabled: "disabled" });
    //顯示載入動畫
    $("loading").show();
}

success(data)

這個大家應該很熟悉了,請求成功時的返回,data的資料型別根據伺服器端定義的,一般為string、int、bool、json

error()

請求失敗時回撥

complete(XMLHttpRequest,textStatus)

請求完成時回撥,不管是請求失敗、超時、成功都會回撥的方法,一般可在這裡做請求超時處理、隱藏載入動畫、取消禁用按鈕等

complete: function () {
    if(textStatus=='timeout'){//判斷是否超時
       alert("網路超時!");  
    }  
    $("#submit").removeAttr("disabled");
    $("loading").hide();
},

一個簡單的例子

前端程式碼:

$.ajax({
    type: 'post',
    url: '../MyBalance/setShare',
    dataType: 'json',
    data: { userName : "小王"},
    success: function (result) {
        if (result.result == 1) {
            alert("成功")
        }else if (result.result == 0) {
            alert("引數錯誤")
        }else if (result.result == -1) {
            alert("系統異常")
        }
    }
})

後臺程式碼:

public JsonResult setShare(string userName )
{
    int result = 0;
    try
    {
        if (userName != null)
        {            
            //處理邏輯
            result = 1;
        }else{
            result = 0;
        }
        return Json(new { result = result }, JsonRequestBehavior.AllowGet);
    }
    catch
    {
        return Json(new { result = -1 }, JsonRequestBehavior.AllowGet);
    }
}