jQuery ajax資料請求
阿新 • • 發佈:2019-01-07
定義和用法
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);
}
}