[jQuery] Ajax


我們很常使用 AJAX 技術,讀寫 Server 端的資料。它是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。☞ jQuery.ajax()

〈1〉基礎參數
參數 說明
type Type: String
請求方式,POST/GET
url Type: String
指定要進行呼叫的位址
data Type: PlainObject or String or Array
■ 傳送至Server的資料,會自動轉為query string的型式,如果是GET請求還會幫你附加到URL。
■ 可用processData選項禁止此自動轉換。
■ 物件型式則為一Key/Value pairs。
■ 使用serialize(),整個form裡面的DOM都可以一次傳過去,而且特殊資料也不會被截斷,蠻好用的一個小技巧,型態的部分要看type的設定,一般表單都是用POST或是GET
success Type: Function
請求成功時,要執行的函式
error Type: Function
請求失敗時,要執行的函式

〈2〉進階參數
參數 說明
dataType Type: String
Server回傳的資料類型,如果沒指定,jQuery會根據HTTP MIME Type自動選擇以responseXML或responseText傳入你的success callback。

可選的資料類型有:
json:傳回JSON
text:傳回純文字字串。
html:傳回HTML,包含jQuery會自動幫你處理的script tags。
xml:傳回可用jQuery處理的XML
script:傳回可執行的JavaScript。(script不會被自動cache,除非cache設為true)
jsonp:在URL加上?callback =?參數,並在Server端配合送回此jsonp callback。
async Type: Boolean
■ 預設為 true,啟動非同步方法。也就是說並不會等 $.ajax 執行完成才 return ,而是一開始就直接 return 了
■ 我們很常會跟 Server 端請求資料,然後依據返回的值執行不同的結果。因此,我們可以將 async 設成 false,採用同步的方法來請求
cache Type: Boolean
■ 預設為 true
■ 如果要避免抓回來都是舊的資料,還是把 cache 設為 false

If set to false, it will force requested pages not to be cached by the browser. Note: Setting cache to false will only work correctly with HEAD and GET requests. It works by appending "_={timestamp}" to the GET parameters. The parameter is not needed for other types of requests, except in IE8 when a POST is made to a URL that has already been requested by a GET.
.done Promise callbacks:the success callback option
■ .done(function(){ // 當都成功時執行... })
■ 當所有的ajax無誤的完成時,可以調用done callback
.fail Promise callbacks:the error callback option, the .fail() method replaces the deprecated .error() method.
■ .fail(function(){ // 處理失敗的事物... })
■ ajax之中若有任一失敗,可以調用 fail callback

〈3〉Sample code
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title of the document</title>
    <link href="bootstrap-3.3.6/css/bootstrap.min.css" rel="stylesheet" />
    <link href="font-awesome-4.5.0/css/font-awesome.min.css" rel="stylesheet" />
  </head>
  <body>
    <div class="container">
<!-- 輸入 -->
      <div class="row">
        <div class="col-md-12">
          <h3><i class="fa fa-modx"></i> AJAX 是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術。</h3>
          <div class="input-group">
            <input type="text" class="form-control" id="search" placeholder="Search for...">
            <span class="input-group-btn">
              <button class="btn btn-default" type="button" id="trigger">Go!</button>
            </span>
          </div><!-- /input-group -->
        </div><!-- /col -->
      </div><!-- /row -->
      <br/>
<!-- 輸出 -->
      <div class="row">
        <div class="col-md-12" id="result">
        </div>
      </div><!-- /row -->
    </div><!-- /container -->
    <script src="jquery-2.1.4/jquery.min.js"></script>
    <script src="bootstrap-3.3.6/js/bootstrap.min.js"></script>
    <script>
    $(document).ready(function(){
      $( "#trigger" ).click(function() {
        var search = $('#search').val();

        $.ajax({
          url: "demo.txt", 
          success: function(data) {
             $("#result").html(
                "<div class='panel panel-default'><div class='panel-body'>" + 
                "<h2>您輸入..." + search + "</h2>" + 
                data + 
                "</div></div>");
          },
          error: function() {
             $('#result').text('An error occurred');
          }
        });
        //ajax end   
      });
    });
    </script>
  </body>
</html>

demo.txt

<h3>jQuery and AJAX is FUN!!!</h3>
<p>資料來源:</p>
<ul>
  <li><a href='http://www.w3schools.com/JQuery/ajax_ajax.asp' target='_blank'>jQuery ajax() Method</a></li>
  <li><a href='http://www.w3schools.com/jquery/jquery_ajax_load.asp' target='_blank'>jQuery - AJAX load() Method</a></li>
  <li><a href='http://getbootstrap.com/getting-started/' target='_blank'>Hello, Bootstrap!</a></li>
</ul>

Source

分享你的 Coding 新鮮事 | [jQuery][筆記] 小心使用 Ajax 防止 Bug 產生
Leo's Blog | [jQuery] 使用Serialize post data
W3School | jQuery ajax - serialize() 方法
四處流浪的阿基。I am Vagrant Walker | [程式][JQuery] JQuery中的Ajax的基礎運用。提供範例程式下載。
formvalidation.io | Using Ajax to submit the form
jQuery AJAX Form Submit Example
jQuery Form Plugin

Image Source

KumarShyama

沒有留言:

技術提供:Blogger.