jQuery中的Ajax

一.load方法

  只显示北加州文档的一部分,可以在URL后加个空格和一个jquery选择器,当URL加载完成后,jquery会用指定的选择器来从加载好的html中选取要显示的部分

//加载并显示天气预告的温度部分
$("#temp").load("weather_report.html #temperature");

  除了必须的URL参数.load()方法还接受两个可选参数

//加载特定区号的天气预报
$("#temp").load("weather_report.html"," zipcode=02134");
//使用对象作为数据,并指定为华氏温度
$("#temp").load("weather_report.html",{zipcode:02134,units:'F'});

  load的另一个参数是回调函数,当ajax请求成功或失败时,会调用改回调函数,如果未指定任何 数据,回调函数可以作为第二个参数传入,否则,它必须是第三个参数

二.jQuery.ajax()

jQuery.ajax({
   type: "get",    
   url: url,
   data: null,
   dataType: "script",
   success: callback    
})

  1.jQuery.ajax()中的通用选项

   type

   url

   data:添加发送的数据,可以是字符串或对象.通常会把对象抓换成字符串

   dataType:指定相应数据的预期类型和jquery处理该数据的方式,合法值是"text,html,scrit,json,jsonp,xml",该选项没有默认值,当没有指定时,jquery会检查相应中的content-type头确定如何处理返回的数据

   contentType:指定请求的HTTP Content-Type头,默认是"application/x-www-form-urlencoded",如果type:post则需要设置该值(我怎么没有印象要设呢??~!)

   timeout:超时时间,单位是毫秒,若设置该项,请求会取消同时触发error回调,回调中的状态码参数为"timeout",默认时间是0,表示除非亲求完成,否者永远不会取消

   cache:对弈get请求,如果设置该项为false,jquery会添加一个"_="参数到url中,或者替换已经该存在的同名参数,该值是当前时间,可以禁用基于浏览器的缓存,因为每次求求的url都不一样

   ifModified

   global

  2.回调

 

// 提交表单数据到后台处理
$.ajax({
    type: "post",
    data: studentInfo,
    contentType: "application/json",
    url: "/Home/Submit",
    beforeSend: function () {
        // 禁用按钮防止重复提交
        $("#submit").attr({ disabled: "disabled" });
    },
    success: function (data) {
        if (data == "Success") {
            //清空输入框
            clearBox();
        }
    },
    complete: function () {
        $("#submit").removeAttr("disabled");
    },
    error: function (data) {
        console.info("error: " + data.responseText);
    }
});

  context:指定回调函数在调用时的上下文对象-this,没有默认值,若不设置,this会指向选项对象

  beforeSend:指定ajax请求发送到服务器之前激活的回调函数.第一个参数是XMLHttpRequest对象,第二个参数是该请求的选项对象beforeSend回调是的程序有机会在XMLHttpRequest对象上设置自定义HTTP

        头部.如果该回到函数返回false,ajax请求会取消,注意跨域的script和jsonp请求没有使用XMLHttpRequest对象,因为不会触发beforeSend的回调.

防止重复数据

在实际项目开发中,提交表单时常常由于网络或者其原因,用户点击提交按钮误认为自己没有操作成功,进而会重复提交按钮操作次数,如果页面前端代码没有做一些相应的处理,通常会导致多条同样的数据插入数据库,导致脏数据的增加。要避免这种现象,在$.ajax请求中的beforeSend方法中把提交按钮禁用掉,等到Ajax请求执行完毕,在恢复按钮的可用状态。

举个例子:

// 提交表单数据到后台处理
$.ajax({
    type: "post",
    data: studentInfo,
    contentType: "application/json",
    url: "/Home/Submit",
    beforeSend: function () {
        // 禁用按钮防止重复提交
        $("#submit").attr({ disabled: "disabled" });
    },
    success: function (data) {
        if (data == "Success") {
            //清空输入框
            clearBox();
        }
    },
    complete: function () {
        $("#submit").removeAttr("disabled");
    },
    error: function (data) {
        console.info("error: " + data.responseText);
    }
});

  success:指定ajax请求完成成功是的回调函数.第一个参数是服务器发送的数据,第二个参数是jquery的状态吗,第三个参数是用来发送该请求的XMLHttpRequest对象.

  error:请求不成功是调用的回调函数.第一个参数是XMLHttpRequest对象(如果用到的话);第二个参数是jquery的状态码:

      http错误:error   超时:timeout    解析出错:parsererror

      注意:如果dataType 为script的请求在返回无效javascript代码时不会触发错误,调用的是success而不是error.

  complete:在调用success/error之后调用complete.

三.工具函数

jQuery.contains()函数用于判断指定元素内是否包含另一个元素。

jQuery.contains( container, contained )

 

posted @ 2016-05-30 11:41  公众号java-codestack  阅读(263)  评论(0编辑  收藏  举报