jQuery中的ajax

2 篇文章 0 订阅
1 篇文章 0 订阅

jQuery中的ajax

Ajax

异步和同步

使用 Ajax 最关键的地方,就是实现异步请求、接受响应及执行回调。那么异步与同步 有什么区别呢?我们普通的 Web 程序开发基本都是同步的,意为执行一段程序才能执行下 一段,类似电话中的通话,一个电话接完才能接听下个电话;而异步可以同时执行多条任务, 感觉有多条线路,类似于短信,不会因为看一条短信而停止接受另一条短信。Ajax 也可以 使用同步模式执行,但同步的模式属于阻塞模式,这样会导致多条线路执行时又必须一条一 条执行,会让 Web 页面出现假死状态,所以,一般 Ajax 大部分采用异步模式。

jQuery对Ajax采用了三层封装,其中最底层的是: .ajax(),中层封装是.load(),.get(),.post,最顶层是getScript和getJSON()。

.load()方法

.load()方法是局部方法,.load()方法中共有三个参数,一个是url,链接地址,第二个是发送的数据data,第三个是回调函数callback,期中第二个参数为非必选参数。

1.参数url, 可以提供筛选功能。
$().load('data/test.html ')
$().load(‘data/text.html .box’)>>>筛选功能

2.data参数传入决定,是否以post方式提交参数是一个对象形式传入。
$().load(‘data/test.html’,{ data:‘admin’ })

3.回调函数function(response,status,xhr){}
$().load(‘data/test.html’,{ data:‘admin’ },function(response,status,xhr){})

response :返回结果,和页面里内容一样 。

status :状态,success,或者error

xhr :XMLHttpRequest,他是一个对象

xhr有四个常用属性:

属性名说明
responseText作为响应主体被返回的文本
responseXML如果响应主体内容类型是"text/xml"或"application/xml", 则返回包含响应数据的 XMLDOM 文档
status响应的 HTTP 状态(状态码)
statusTextHTTP 状态的说明
.get()和.post()

.get()和.post()有四个参数,其中第一个地址参数为必填参数,第二个参数data,和第三个callback函数和.load()方法一样, 第四个参数为type
$.get(‘data/test.html’,{ name:‘admin’ },‘html’)

由于php返回的值默认为纯文本格式,所以数据格式html和text格式可以不写。如果写入数据格式,那么默认会强制转换为该格式。如果传入错误格式,那么不会有返回值。

:一般情况下,type都是只能判断,并不需要人为设置,除非需要打印整个文件的代码,才需要强制类型转换。

.get()和.post()的差别:.get()是以get方式提交,.post()方式是以post方式提交。

1.get方式提交数据是吧数据放在浏览器网址上面的,post是通过http消息,实体提交的。
2.get提交方式有大小限制,限制在2KB,而post方式不收大小限制。
3.get方式因为在浏览器中会被历史记录缓存,所以这种提交数据方式并不安全,post方式没有这种问题。
4.在服务器端(php语言),get方式通过 G E T [ ] 方 式 获 取 , p o s t 通 过 GET[]方式获取,post通过 GET[]postPOST[]方式获取。

.ajax()方法;

getScript()和$.getJSON()

jquery封装AJAX的最顶层,用于特定情况下的使用。 有三个参数,与 . g e t ( ) 和 .get()和 .get().post()方法,前三个参数相同。

getScript()在需要资源的时候加载,是实现资源节约的时候需要用到的一个方法。

$.ajax()方法:

 $.ajax({
       //常用属性集合
         $.ajax({
            url:url,
            data:{},
            type:"get",
            success:function(){},
            timeout:2000,
            error:function(){},
            beforeSend:function(){},
            dataType:"jsonp",
            jsonp:"cb",
            // 是否触发ajax的全局方法
            global:true
         })
    })

         // 最简化的ajax
         $.ajax({
             url:url,
             success:function(res,type,xhr){
                 console.log(res)
             }
         })
       // 超时的ajax
        $.ajax({
            url:url,
            success:function(res,type,xhr){
                console.log(res)
            },
            error:function(a,b,c){
                console.log(a,b,c)
            },
            timeout:10
        })

表单序列化
当页面上表单需要提交时,我们如果把数据直接写在data里面工作量会很大,所以出现了表单序列化。
$(‘form’).serialize()
表单序列化是把整个表单内容提取出来,组成一个键值对,并且对URL进行编码。

$.ajaxSetup() ajax初始化对于ajax可以做一个预先设置,减少重复。

$.ajaxSetup({
    url:'',
    type:'post',
    data:{user:'ddd'}
})

$.ajax({
    success:function(data){
        alert(data)
    }
})

$.param()方法,用来解析对象。

因为浏览器对对象的解析有限,太过复杂的对象无法解析,于是出现了$.param()方法用来解析对象。

alert($.param({
    email:'ddd',
    user:'lll'
}))
全局函数类型何时被触发参数
ajaxStart在jQuery AJAX函数或命令发起时,但在XHR实例被创建之前类型被设置为ajaxStart的全局回调信息对象
ajaxSend在XHR实例被创建之后,但在XHR实例被发送给服务器之前类型被设置为ajaxSend的全局回调信息对象;XHR实例;$.ajax()函数使用的属性
ajaxSuccess在请求已从服务器返回之后,并且响应包含成功状态码类型被设置为ajaxSuccess的全局回调信息对象;XHR实例;$.ajax()函数使用的属性
ajaxError在请求已从服务器返回之后,并且响应包含失败状态码类型被设置为ajaxError的全局回调信息对象;XHR实例;$.ajax()函数使用的属性;被XHR实例返回的异常对象(如果有的话)
ajaxComplete在请求已从服务器返回之后,并且在任何已声名的ajaxSuccess或ajaxError回调函数已被调用之后类型被设置为ajaxComplete的全局回调信息对象;XHR实例;$.ajax()函数使用的属性
ajaxStop在所有其他AJAX处理完成以及任何其他适用的全局回调函数已被调用之后类型被设置为ajaxStop的全局回调信息对象
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值