Front end advanced course 7

本节课的主要内容为:

  • jQuery ajax 2

jQuery ajax 2

上节课我们讲了 jQuery 中 ajax 的几个基础方法使用,这节课我们继续讲其他方法。

ajax

上节课我们有讲到 get 方法和 post 方法,其实他们都调用了一个更底层的方法,也是 jQuery 中各种 AJAX 方法的基础,就是 ajax 方法:

jQuery.ajax( [settings ] )

这个方法的设置项非常多,我们这里挑几个重要的讲:

  • url
  • async
  • cache
  • crossDomain
  • data
  • dataType
  • headers
  • method
  • success
  • error
  • complete

param

jQuery.param( obj )

该方法用来将一个对象转化为常见的 URL 中参数的样子,如:

var params = { width:1680, height:1050 };
console.log(jQuery.param( params )); // width=1680&height=1050

serialize

.serialize()

该方法没有参数,用来将一个表单的内容转化成格式化的字符串,如:

<form>
  <select name="single">
    <option>Single</option>
    <option>Single2</option>
  </select>

  <br>
  <select name="multiple" multiple="multiple">
    <option selected="selected">Multiple</option>
    <option>Multiple2</option>
    <option selected="selected">Multiple3</option>
  </select>

  <br>
  <input type="checkbox" name="check" value="check1" id="ch1">
  <label for="ch1">check1</label>
  <input type="checkbox" name="check" value="check2" checked="checked" id="ch2">
  <label for="ch2">check2</label>

  <br>
  <input type="radio" name="radio" value="radio1" checked="checked" id="r1">
  <label for="r1">radio1</label>
  <input type="radio" name="radio" value="radio2" id="r2">
  <label for="r2">radio2</label>
</form>
<script>
    console.log($('form').serialize());
    // single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1
</script>

serializeArray

.serializeArray()

使用方法同 serialize,只是返回的结果是格式化的数组,如:

[
  {
    name: "a",
    value: "1"
  },
  {
    name: "b",
    value: "2"
  },
  {
    name: "c",
    value: "3"
  },
  {
    name: "d",
    value: "4"
  },
  {
    name: "e",
    value: "5"
  }
]

全局 ajax 事件

在 AJAX 的过程中有一些时间点,这些时间点都有对应的事件触发,我们可以通过监听事件的方式来给予处理。 通常情况下,每个 AJAX 请求我们可以设置各自的事件监听,如上面 ajax 方法的参数,但有时候需要进行全局的监听,这里讲几个全局的 AJAX 事件监听。

ajaxComplete

$( document ).ajaxComplete(function() {
  $( ".log" ).text( "Triggered ajaxComplete handler." );
});

ajaxError

$( document ).ajaxError(function() {
  $( ".log" ).text( "Triggered ajaxError handler." );
});

ajaxStart

$( document ).ajaxStart(function() {
  $( ".log" ).text( "Triggered ajaxStart handler." );
});

ajaxSend

$( document ).ajaxSend(function() {
  $( ".log" ).text( "Triggered ajaxSend handler." );
});

ajaxStop

$( document ).ajaxStop(function() {
  $( ".log" ).text( "Triggered ajaxStop handler." );
});

ajaxSuccess

$(document).ajaxSuccess(function() {
  $( ".log" ).text( "Triggered ajaxSuccess handler." );
});

小练习

  1. 根据提供的 API 做一个页面用 AJAX 请求到数据。

HOME WORK

  1. 做一个输入内容推荐功能,后端服务那边 js 里放一个固定的对象,模拟内容和推荐结果列表的关联,然后根据 AJAX 请求来的内容返回对应的结果。页面上根据返回结果动态的更改提示内容。

内容预告

  1. 练习