既严肃认真,又生动活泼

Ajax全面基础学习(二)

两种配置ajax的方式

$.ajax('url',{
    // 配置ajax
});

$.ajax({
    url : 'url'
    // 其他ajax配置
})

 

 

 

ajax的回调函数

$.ajax('url',{

  //请求成功的回调函数
  success : function(data){console.log(arguments);},

  //请求失败的回调函数    
  error : function(jqXHR,status,err){
    //jqXHR:jQuery增强的xhr对象
    //err:通过底层throw抛出的异常
  },

  //不论成功失败都执行的回调函数
  complete:function(jqXHR,status){
    alert(jqXHR.status+jqXHR.statusText);
  },

  //不同状态的回调函数
  statusCode:{
    '403' : function(jqXHR,status,err){},
    '400' : function(){}
  }
});

 

 

配置请求数据:data , processDara , contentType , trandional

$.ajax('url',{
  
data : {a:1,b:2},
type : 'POST',      //默认为GET
processData : false, //默认为true,即对data进行预处理编码,设置false后不进行预处理,这时候发送出去的是一个字符串,即对data对象使用了toString方法,当data是html语句,我们希望不进行预处理,直接发送字符串,这时候可以设置为false

contentType : "application/json",    //这时候需要将data处理为json格式:data:JSON.parse({a:1,b:2})

traditional : true    //当data中存在数组,需要将此项设置为true
})

 

 

 

配置响应数据:dataType,dataFilter

$.ajax('url',{
  dataType : 'text',    //设置服务器返回的响应内容的type,属性值有text,html,json,jsonp,    script(指可以直接执行的script)

  dataFilter : function(data,type){    //用于对服务器返回的内容进行筛选处理后,再交给success  //如果没有设置dataType,这里的type是undefined
    var tmp = JSON.parse(data);      //把数据转换为json对象
    return tmp.length;              //success的data只会得到json数组的长度,而不是原data
  }
});

 

 

 

beforeSend()的用途:

 

1、防止重复

在实际项目开发中,提交表单时常常由于网络或者其原因,用户点击提交按钮误认为自己没有操作成功,进而会重复提交按钮操作次数,如果页面前端代码没有做一些相应的处理,通常会导致多条同样的数据插入数据库,导致脏数据的增加。要避免这种现象,在$.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);
}
});

 

2、模拟Toast效果

ajax请求服务器加载数据列表时提示loading(“加载中,请稍后...”)

$.ajax({
  type: "post",
  contentType: "application/json",
  url: "/Home/GetList",
  beforeSend: function () {
    $("loading").show();
  },
  success: function (data) {
    if (data == "Success") {
      // ...
    }
  },
  complete: function () {
    $("loading").hide();
  },
  error: function (data) {
    console.info("error: " + data.responseText);
  }
});

 

posted @ 2016-04-02 18:39  大宝章  阅读(352)  评论(0编辑  收藏  举报