欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery中$.ajax()方法的具體使用

 更新時間:2023年05月19日 09:42:44   作者:ren202009  
本文主要介紹了jQuery中$.ajax()方法的具體使用,$.ajax(url,[settings])通過 HTTP 請求加載遠程數據,文中通過示例代碼詳細的介紹了$.ajax()的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1 Ajax操作

1.1 $.ajax

jQuery對象上面還定義了Ajax方法($.ajax()),用來處理Ajax操作。調用該方法后,瀏覽器就會向服務器發(fā)出一個HTTP請求。

$.ajax(url,[settings]);通過 HTTP 請求加載遠程數據。jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。$.ajax() 返回其創(chuàng)建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該函數,除非你需要操作不常用的選項,以獲得更多的靈活性。最簡單的情況下,$.ajax()可以不帶任何參數直接使用。注意,所有的選項都可以通過$.ajaxSetup()函數來全局設置。

$.ajax()的用法主要有兩種。

$.ajax(url[, options])
$.ajax([options])

上面代碼中的url,指的是服務器網址,options則是一個對象參數,設置Ajax請求的具體參數。

$.ajax({
  async: true,
  url: '/url/to/json',
  type: 'GET',
  data : { id : 123 },
  dataType: 'json',
  timeout: 30000,
  success: successCallback,
  error: errorCallback,
  complete: completeCallback,
  statusCode: {
        404: handler404,
        500: handler500
  }
})
function successCallback(json) {
    $('<h1/>').text(json.title).appendTo('body');
}
function errorCallback(xhr, status){
    console.log('出問題了!');
}
function completeCallback(xhr, status){
    console.log('Ajax請求已結束。');
}

上面代碼的對象參數有多個屬性,含義如下:

  • accepts:將本機所能處理的數據類型,告訴服務器。
  • async:該項默認為true,如果設為false,則表示發(fā)出的是同步請求。
  • beforeSend:指定發(fā)出請求前,所要調用的函數,通常用來對發(fā)出的數據進行修改。
  • cache:該項默認為true,如果設為false,則瀏覽器不緩存返回服務器返回的數據。注意,瀏覽器本身就不會緩存POST請求返回的數據,所以即使設為false,也只對HEAD和GET請求有效。
  • complete:指定當HTTP請求結束時(請求成功或請求失敗的回調函數,此時已經運行完畢)的回調函數。不管請求成功或失敗,該回調函數都會執(zhí)行。它的參數為發(fā)出請求的原始對象以及返回的狀態(tài)信息。
  • contentType:發(fā)送到服務器的數據類型。
  • context:指定一個對象,作為所有Ajax相關的回調函數的this對象。
  • crossDomain:該屬性設為true,將強制向相同域名發(fā)送一個跨域請求(比如JSONP)。
  • data:向服務器發(fā)送的數據,如果使用GET方法,此項將轉為查詢字符串,附在網址的最后。
  • dataType:返回值類型,服務器返回的數據類型,可以設為text、html、script、json、jsonp和xml。
  • error:請求失敗時的回調函數,函數參數為發(fā)出請求的原始對象以及返回的狀態(tài)信息。
  • headers:指定HTTP請求的頭信息。
  • ifModified:如果該屬性設為true,則只有當服務器端的內容與上次請求不一樣時,才會發(fā)出本次請求。
  • jsonp:指定JSONP請求“callback=?”中的callback的名稱。
  • jsonpCallback: 指定JSONP請求中回調函數的名稱。
  • mimeType:指定HTTP請求的mime type。
  • password:指定HTTP認證所需要的密碼。
  • statusCode:值為一個對象,為服務器返回的狀態(tài)碼,指定特別的回調函數。
  • success:請求成功時的回調函數,函數參數為服務器傳回的數據、狀態(tài)信息、發(fā)出請求的原始對象。
  • timeout: 等待的最長毫秒數。如果過了這個時間,請求還沒有返回,則自動將請求狀態(tài)改為失敗。
  • type:向服務器發(fā)送信息所使用的HTTP動詞,默認為GET,其他動詞有POST、PUT、DELETE。
  • url:服務器端網址。這是唯一必需的一個屬性,其他屬性都可以省略。
  • username:指定HTTP認證的用戶名。
  • xhr:指定生成XMLHttpRequest對象時的回調函數。

這些參數之中,url可以獨立出來,作為ajax方法的第一個參數。也就是說,上面代碼還可以寫成下面這樣。

$.ajax('/url/to/json',{
  type: 'GET',
  dataType: 'json',
  success: successCallback,
  error: errorCallback
})

作為向服務器發(fā)送的數據,data屬性也可以寫成一個對象。

$.ajax({
  url: '/remote/url',
  data: {
    param1: 'value1',
    param2: 'value2',
    ...
  }
});
// 相當于
$.ajax({
    url: '/remote/url?param1=value1&param2=value2...'
}});

1.2 簡便寫法

ajax方法還有一些簡便寫法。

  • $.get():發(fā)出GET請求。
  • $.getScript():讀取一個JavaScript腳本文件并執(zhí)行。
  • $.getJSON():發(fā)出GET請求,讀取一個JSON文件。
  • $.post():發(fā)出POST請求。
  • $.fn.load():讀取一個html文件,并將其放入當前元素之中。

一般來說,這些簡便方法依次接受三個參數:url、數據、成功時的回調函數。

1.2.1 $.get(),$.post()

這兩個方法分別對應HTTP的GET方法和POST方法。

$.get('/data/people.html', function(html){
  $('#target').html(html);
});
$.post('/data/save', {name: 'Rebecca'}, function (resp){
  console.log(JSON.parse(resp));
});

get方法和post方法的參數相同,第一個參數是服務器網址,該參數是必需的,其他參數都是可選的。第二個參數是發(fā)送給服務器的數據,第三個參數是操作成功后的回調函數。

上面的post方法對應的ajax寫法如下。

$.ajax({
    type: 'POST',
    url: '/data/save',
    data: {name: 'Rebecca'},
    dataType: 'json',
    success: function (resp){
      console.log(JSON.parse(resp));
    }
});

1.2.2 $.getJSON()

ajax方法的另一個簡便寫法是getJSON方法。當服務器端返回JSON格式的數據,可以用這個方法代替$.ajax方法。

$.getJSON('url/to/json', {'a': 1}, function(data){
    console.log(data);
});

上面的代碼等同于下面的寫法。

$.ajax({
  dataType: "json",
  url: '/url/to/data',
  data: {'a': 1},
  success: function(data){
    console.log(data);
  }
});

1.2.3 $.getScript()

$.getScript方法用于從服務器端加載一個腳本文件。

$.getScript('/static/js/myScript.js', function() {
    functionFromMyScript();
});

上面代碼先從服務器加載myScript.js腳本,然后在回調函數中執(zhí)行該腳本提供的函數。

getScript的回調函數接受三個參數,分別是腳本文件的內容,HTTP響應的狀態(tài)信息和ajax對象實例。

$.getScript( "ajax/test.js", function (data, textStatus, jqxhr){
  console.log( data ); // test.js的內容
  console.log( textStatus ); // Success
  console.log( jqxhr.status ); // 200
});

getScript是ajax方法的簡便寫法,因此返回的是一個deferred對象,可以使用deferred接口。

jQuery.getScript("/path/to/myscript.js")
    .done(function() {
        // ...
    })
    .fail(function() {
        // ...
});

1.3 Ajax事件

jQuery提供以下一些方法,用于指定特定的AJAX事件的回調函數。

  • .ajaxComplete():ajax請求完成。
  • .ajaxError():ajax請求出錯。
  • .ajaxSend():ajax請求發(fā)出之前。
  • .ajaxStart():第一個ajax請求開始發(fā)出,即沒有還未完成ajax請求。
  • .ajaxStop():所有ajax請求完成之后。
  • .ajaxSuccess():ajax請求成功之后。

下面是示例。

$('#loading_indicator')
.ajaxStart(function (){$(this).show();})
.ajaxStop(function (){$(this).hide();});

下面是處理Ajax請求出錯(返回404或500錯誤)的例子。

$(document).ajaxError(function (e, xhr, settings, error) {
  console.log(error);
});

1.4 返回值

ajax方法返回的是一個deferred對象,可以用then方法為該對象指定回調函數(詳細解釋參見《deferred對象》一節(jié))。

$.ajax({
  url: '/data/people.json',
  dataType: 'json'
}).then(function (resp){
  console.log(resp.people);
})

1.5 中文亂碼

1.5.1 解決方法一

js文件中使用encodeURI()方法。

var url = "Validate.jsp?id=" + encodeURI(encodeURI(idField.value));   

2.在后臺中對傳遞的參數進行URLDecoder解碼

String username = URLDecoder.decode(request.getParameter("id"),"UTF-8")

1.5.2 解決方法二

當網站頁面不是utf-8編碼時,ajax提交的中文便會變成亂碼。

解決方法如下:找到jquery.js里的contentType:application/x-www-form-urlencoded,將它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。

原因:未指定charset時,jquery使用ISO-8859-1,ISO8859-1,通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語言不可缺少的附加字符。jquery的ajax根本沒有考慮到國際化的問題,而使用了歐洲的字符集,所以傳遞中文時才會出現亂碼

到此這篇關于jQuery中$.ajax()方法的具體使用的文章就介紹到這了,更多相關jQuery $.ajax()內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論