06jQuery-06-AJAX

來源:互聯網
上載者:User

標籤:loaded   return   判斷   請求   智能   索引值   console   設定   plain   

1、JS的AJAXAJAX,Asynchronous JavaScript and XML,意思就是用JavaScript執行非同步網路請求。
如果要讓使用者留在當前頁面中,同時發出新的HTTP請求,就必須用JavaScript發送這個新請求,接收到資料後,再用JavaScript更新頁面,這樣一來,使用者就感覺自己仍然停留在當前頁面,但是資料卻可以不斷地更新。

即,為了實現局部重新整理。
JS中如果使用AJAX,在主流瀏覽器上主要依靠 XMLHttpRequest 對象(IE略不同):
 
  1. function success(text) {
  2. var textarea = document.getElementById(‘test-response-text‘);
  3. textarea.value = text;
  4. }
  5. function fail(code) {
  6. var textarea = document.getElementById(‘test-response-text‘);
  7. textarea.value = ‘Error code: ‘ + code;
  8. }
  9. var request = new XMLHttpRequest(); // 建立XMLHttpRequest對象
  10. request.onreadystatechange = function () { // 狀態發生變化時,函數被回調
  11. if (request.readyState === 4) { // 成功完成
  12. // 判斷響應結果:
  13. if (request.status === 200) {
  14. // 成功,通過responseText拿到響應的文本:
  15. return success(request.responseText);
  16. } else {
  17. // 失敗,根據響應碼判斷失敗原因:
  18. return fail(request.status);
  19. }
  20. } else {
  21. // HTTP請求還在繼續...
  22. }
  23. }
  24. // 發送請求:
  25. request.open(‘GET‘, ‘/api/categories‘);
  26. request.send();
  27. alert(‘請求已發送,請等待響應...‘);

2、jQuery的AJAX而jQuery中使用AJAX方法的話就簡單多了,設定項也簡單明了,例如通過AJAX載入一段文本:
 
  1. <div id="myDiv"><h2>Let AJAX change this text</h2></div>
  2. <button id="b01" type="button">Change Content</button>
  3. //jQuery操作
  4. $(document).ready(function(){
  5. $("#b01").click(function(){
  6. htmlobj=$.ajax({url:"/jquery/test1.txt",async:true});
  7. $("#myDiv").html(htmlobj.responseText);
  8. });
  9. });

jQuery中ajax方法的文法是:
 
  1. jQuery.ajax(url, [settings])

settings,可選。用於配置 Ajax 請求的索引值對集合,常用選項如下:
  • async:是否非同步執行AJAX請求,預設為true,千萬不要指定為false
  • method:發送的Method,預設為‘GET‘,可指定為‘POST‘、‘PUT‘等
  • contentType:發送POST請求的格式,預設值為‘application/x-www-form-urlencoded; charset=UTF-8‘,也可以指定為text/plain、application/json
  • data:發送的資料,可以是字串、數組或object。如果是GET請求,data將被轉換成query附加到URL上,如果是POST請求,根據contentType把data序列化成合適的格式
  • headers:發送的額外的HTTP頭,必須是一個object
  • dataType:接收的資料格式,可以指定為‘html‘、‘xml‘、‘json‘、‘text‘等,預設情況下根據響應的Content-Type猜測

實際上,因為get和post極其常用,jQuery對這兩者還額外提供了方法 $.get() 和 $.post(),這兩者的文法都類似:
 
  1. //get
  2. jQuery.get(url, data, success(response,status,xhr), dataType)
  3. //post
  4. jQuery.post(url, data, success(data, textStatus, jqXHR), dataType)

它們都是簡寫的ajax函數,其中:
  • url:必需。規定把請求發送到哪個 URL
  • data:可選。映射或字串值。規定連同請求發送到伺服器的資料
  • success(data, textStatus, jqXHR):可選。請求成功時執行的回呼函數
  • dataType:可選。規定預期的伺服器響應的資料類型。預設執行智能判斷(xml、json、script 或 html)

樣本:
 
  1. //使用 ajax 請求發送表單資料:
  2. $.post("test.php", $("#testform").serialize());
  3. //輸出來自請求頁面 test.php 的結果(HTML 或 XML,取決於所返回的內容)
  4. $.post("test.php", function(data){
  5. alert("Data Loaded: " + data);
  6. });
  7. //獲得 test.php 頁面返回的 json 格式的內容
  8. $.post("test.php", { "func": "getNameAndTime" },
  9. function(data){
  10. alert(data.name); // John
  11. console.log(data.time); // 2pm
  12. }, "json");


06jQuery-06-AJAX

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.