1. 加载内容到元素中

1.1 使用 jQuery 加载内容

load(url, parameters, callback)

url - 服务器端资源的URL

parameters - 作为请求参数传递的数据,可以是字符串(作为查询字符串),也可以是对象(属性会被序列化为正确编码的参数),或者对象组成的数组。如果是对象或数组,则使用POST请求,如果省略或者指定为字符串,则使用GET请求。

callback - 回调函数,传入的参数是响应文本、状态字符串(通常是 success)以及XHR实例,函数上下文是目标元素。

示例:

$('#someContainer').load('someResource');

$('.injectMe').load("/someResource div");

序列化表单数据:serialize() 返回格式化的查询字符串

serializeArray() 返回表单数据组成的数组

1.2 加载动态的 HTML 片段

$("#bootChooserControl").load("/jqia2/action/fetchBootStyleOptions");

$("#bootChooserControl").change(function(event){

  $("#productDetailPane").load("/jqia2/action/fetchProductDetails",

    {style: $(event.target).val()},

    function(){$("[value='']", event.target).remove();}

  );

});

示例见:http://www.bibeault.org/jqia2/chapter8/bootcloset/phase.1.html

2. 发起 GET  和 POST 请求

上面的示例,第2个load()实际上发送的是POST请求,这并不合理,可以改用另一个函数来发起 Ajax 请求。

2.1 使用 GET 获取数据

$.get(url, parameters, callback, type)

url - 服务器端资源的URL

parameters - (字符串|对象|数组)

callback - 可选的回调函数,在请求成功完成时调用。参数是响应主体和文本信息,以及XHR实例。

type - 指定如何解析响应主体,(可选)可以是:html、text、xml、json、script或jsonp。

示例:

$("#bootChooserControl").change(function(event){

  $.get("/jqia2/action/fetchProductDetails",

    {style: $(event.target).val()},

    function(resposne){

      $("#productDetailPane").html(response);

      $("[value='']", event.target).remove();

    } // fn

  ); // get

});

见:http://www.bibeault.org/jqia2/chapter8/bootcloset/phase.2.html

2.2 获取 JSON 数据

$.getJSON(url, parameters, callback)

2.3 发起 POST 请求

$.post(url, parameters, callback, type)

2.4 实现级联下拉列表

$('#bootChooserControl').load('/jqia2/action/fetchBootStyleOptions');

$('#bootChooserControl').change(function(event){

  $('#productDetailPane').load('/jqia2/action/fetchProductDetails',

     $(this).serialize()

  );

  $('#colorChooserControl').load('/jqia2/action/fetchColorOptions',

     $(this).serialize(),

     function(){

       $(this).attr('disabled',false);

       $('#sizeChooserControl').attr('disabled',true).html("");

     }

   );

});

$('#colorChooserControl').change(function(event){

    $('#sizeChooserControl').load('/jqia2/action/fetchSizeOptions',

        $('#bootChooserControl,#colorChooserControl').serialize(),

        function(){

          $(this).attr('disabled',false);

        }

     );

});

$('#selectionsPane').change(function(event){

    $('[value=""]',event.target).remove();

});

 

3. 完全控制 Ajax 请求

3.1 发起带所有参数的Ajax请求

$.ajax(options)

3.2 设置请求默认值

$.ajaxSetup(options)

示例:

$.ajaxSetup({

  type: 'POST',

  timeout: 5000,

  dataType: 'html'

});

3.3 处理 Ajax 事件

局部事件和全局事件。

局部事件由回调函数来处理,全局事件可以通过bind()创建事件处理器。全局事件会广播到DOM中的每个元素上。

事件名称

ajaxStart

beforeSend

ajaxSend

success

ajaxSuccess

error

ajaxError

complete

ajaxComplete

ajaxStop

除了使用bind(),还提供了快捷函数:

ajaxComplete(callback)

ajaxError(callback)

ajaxSend(callback)

ajaxStart(callback)

ajaxStop(callback)

ajaxSuccess(callback)

示例见 :http://www.bibeault.org/jqia2/chapter8/ajax.events.html

 

4. 整合所有知识

见:http://www.bibeault.org/jqia2/chapter8/bootcloset/phase.4a.html

和:http://www.bibeault.org/jqia2/chapter8/bootcloset/phase.4b.html