亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1 Ajax操作

1.1 $.ajax

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

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

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

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

上面代碼中的url,指的是服務(wù)器網(wǎng)址,options則是一個對象參數(shù),設(shè)置Ajax請求的具體參數(shù)。

$.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請求已結(jié)束。');
}

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

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

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

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

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

$.ajax({
  url: '/remote/url',
  data: {
    param1: 'value1',
    param2: 'value2',
    ...
  }
});
// 相當(dāng)于
$.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文件,并將其放入當(dāng)前元素之中。

一般來說,這些簡便方法依次接受三個參數(shù):url、數(shù)據(jù)、成功時的回調(diào)函數(shù)。

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

這兩個方法分別對應(yīng)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方法的參數(shù)相同,第一個參數(shù)是服務(wù)器網(wǎng)址,該參數(shù)是必需的,其他參數(shù)都是可選的。第二個參數(shù)是發(fā)送給服務(wù)器的數(shù)據(jù),第三個參數(shù)是操作成功后的回調(diào)函數(shù)。

上面的post方法對應(yīng)的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方法。當(dāng)服務(wù)器端返回JSON格式的數(shù)據(jù),可以用這個方法代替$.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方法用于從服務(wù)器端加載一個腳本文件。

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

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

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

$.getScript( "ajax/test.js", function (data, textStatus, jqxhr){
  console.log( data ); // test.js的內(nèi)容
  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事件的回調(diào)函數(shù)。

  • .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方法為該對象指定回調(diào)函數(shù)(詳細(xì)解釋參見《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.在后臺中對傳遞的參數(shù)進行URLDecoder解碼

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

1.5.2 解決方法二

當(dāng)網(wǎng)站頁面不是utf-8編碼時,ajax提交的中文便會變成亂碼。

解決方法如下:找到j(luò)query.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根本沒有考慮到國際化的問題,而使用了歐洲的字符集,所以傳遞中文時才會出現(xiàn)亂碼

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

相關(guān)文章

最新評論