Ajax和jsonp使用方法總結

來源:互聯網
上載者:User
ajax和jsonp可以與後台通訊,擷取資料和資訊,但是又不用重新整理整個頁面,實現頁面的局部重新整理。本文將帶領大家學習Ajax和jsonp使用方法,所以我們對Ajax和jsonp使用方法做了一個總結分享給大家,需要的朋友可以參考下,希望能協助到大家。

一、ajax

•定義:一種發送http請求與後台進行非同步通訊的技術。

•原理:執行個體化xmlhttp對象,使用此對象與後台通訊。

ajax的同源策略:

•ajax請求的頁面或資源只能是同一個域下面的資源,不能是其他域的資源,這是在設計ajax時基於安全考慮。

--------------------------------------------------------------------------------

ajax的方法:

1. $.ajax({}):

•常用參數: •url:請求網路地址
•type:請求方式,預設是'GET',常用'POST'
•dataType:設定返回的資料格式,一般使用json,也可以是html和jsonp;
•data:設定發送給伺服器的資料
•.done():佈建要求成功後的回呼函數
•.fail():佈建要求失敗後的回呼函數
•async:設定是否非同步,預設值是'true',表示非同步

•代碼運用:

$(function () {  $("input").click(function () {    $.ajax({      url: "./data.json",      type: "get",      dataType: "json",    });    .done(function(data) {//請求成功的回呼函數      $("input").val(dat.name);    })    .fail(function() {      alert('伺服器逾時,請重試!');    });  });})......<body>  <p>    <input type="button" value="xinzhi">  </p></body>

說明:data表示後台返回的資料;ajax使用需要依賴伺服器環境。

2. $.get():

•$.get() 方法使用GET請求從伺服器載入資料;也是一種無重新整理的請求資料的ajax方法。

•參數:
•url:訪問的網址,需要遵循同源策略;
•data:發送到伺服器的資料。
•function(data,status){}:請求成功啟動並執行函數
•dataType:請求響應的資料類型。

//參考代碼:$(function () {  $("input").click(function () {    $.get(      "./data.json",      function (data,status) {        console.log(data.name);      },      "json"    );  });})......<body>  <p>    <input type="button" value="xinzhi">  </p></body>

•$.get()方法的參數和$.ajax()不一樣,網址url為必須的參數,其他三個可選。
•data為返回的資料,status表示請求的狀態,一般有""success","error","timeout"等幾種。
•如果datatype類型為jsonp,也可以跨域請求資料。
•無請求失敗的回呼函數。

3. $.post()

•$.get() 方法使用POST請求從伺服器載入資料;
•其使用的方法和$.get()方法完全一樣。

4. $.load():

•從伺服器載入資料,不需要指定datatype,返回的資料會自動放置到元素中。
•參數:

•URL:地址;
•data:請求的參數,可選;
•function(response,status,xhr):請求成功的回呼函數。

$(function () {  $("input").click(function () {    $(".box").load(      "./data.json",      function (response,status) {        console.log(data.name);      }    );  });})......<body>  <p>    <input type="button" value="xinzhi">    <p class="box"></p>  </p></body>

•返回的資料會放置在p中;
•不能跨域訪問資料;
•response為返回的資料,status為請求的狀態;
•無請求失敗的回呼函數。

4. getJSON()

•方法使用 AJAX 的 HTTP GET 請求擷取 JSON 資料。
•參數:
•url: 請求網址,必須的參數;
•data: 發送給伺服器的資料;
•function(data,status,xhr):請求成功的回呼函數

$(function () {  $("input").click(function () {    $.getJSON(      "./data.json",      function(data,status) {        console.log(data.name);      },    );  });})......<body>  <p>    <input type="button" value="xinzhi">  </p></body>

•方法直接擷取的是json資料;

•無返回失敗的回呼函數;

•回呼函數時命名函數,不是匿名函數;

5. getScript()

•方法使用 AJAX 的 HTTP GET 請求擷取並執行js代碼。

•參數:

•url: 請求網址,必須的參數;

•function(data,status):請求成功的回呼函數

$(function () {  $("input").click(function () {    $.getScript(      "./data.js",      function(data,status) {        console.log(data);      },    );  });})......<body>  <p>    <input type="button" value="xinzhi">  </p></body>

•返回結data是js代碼;

•該方法可以用來動態載入js代碼。

二、jsonp

•定義:一種可以實現跨域發送http請求的資料通訊格式,可以嵌在ajax中使用。
•原理:利用script標籤可以跨域連結資源的特性。

用法一:函數傳參

<script type="text/javascript">  function aa(data){    console.log(data.name);  }</script><script type="text/javascript" src="....../data.js"></script>

說明:在外部定義一個data.js檔案,這個檔案的路徑可以與當前頁面不在同一個域下面。

data.js的內容:

aa({    "data":{    "name":"xiaohong",    "age":"18"  }})

•將資料以頁面定義的函數的參數的形式傳遞進去,從而擷取資料。

•本質上可以將資料拆分,使得資料不用強制儲存在同一個網域名稱下。

用法二:利用ajax

$.ajax({  url:'...../data.js',//可以不是本地區名   type:'get',  dataType:'jsonp', //jsonp格式訪問  jsonpCallback:'aa' //擷取資料的函數}).done(function(data){  console.log(data.name);}).fail(function() {  alert('伺服器逾時,請重試!');});

•data.js的內容和上面一樣。

•使用ajax的方法本質上也是script標籤可以跨域連結資源,不過jquery為其封裝了相同的方法,看起來一樣。

•以上代碼的執行過程為:ajax通過jsonp技術跨域訪問data.js檔案,通過找到aa()方法將其參數傳遞給.done方法的data參數執行.done方法。

•目前這種方式仍然有其局限性,就是必須知道data.js檔案的名字和定義的方法aa,如果在僅僅知道網域名稱的情況下,需要另外的方法.

用法三

var $input = $("input");$input.keyup(function () {  $.ajax({    url:'https://sug.so.360.cn/suggest?',//請求360搜尋的聯想資料    type:'get',    dataType:'jsonp', //jsonp格式訪問    data: {word: $input.val()},  })  .done(function(data){    console.log(data);  })  .fail(function() {    alert('伺服器逾時,請重試!');  });})....<body>  <input type="text"></body>

•通過瀏覽器查看每次輸入關鍵字伺服器發送回的資料包,找到js檔案中header的地址以及相關的提交資料,發現key為word關鍵字,因此可以向伺服器發送data資料。
•伺服器返回的資料會自動傳給回調的匿名函數的參數data.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.