ajax

ajax

1.基本操作

1.1readyState

console.log(xhr.readyState)

0 UNSENT 代理(XHR)被创建,但尚未调用 open() 方法。

1 OPENED open() 方法已经被调用,建立了连接。

2 HEADERS_RECEIVED send() 方法已经被调用,并且已经可以获取状态行和响应头。

3 LOADING 响应体下载中, responseText 属性可能已经包含部分数据。

4 DONE 响应体下载完成,可以直接使用 responseText 。

2.具体用法

2.1get方法

var xhr = new XMLHttpRequest()
    // GET 请求传递参数通常使用的是问号传参
    // 这里可以在请求地址后面加上参数,从而传递数据到服务端
    xhr.open('GET', './delete.php?id=1')
    // 一般在 GET 请求时无需设置响应体,可以传 null 或者干脆不传
    xhr.send(null)
    xhr.onreadystatechange = function () {
        if (this.readyState === 4) {
            console.log(this.responseText)
        }
    }
// 一般情况下 URL 传递的都是参数性质的数据,而 POST 一般都是业务数据

2.2post方法

    var xhr = new XMLHttpRequest()
    // open 方法的第一个参数的作用就是设置请求的 method
    xhr.open('POST', './add.php')
    // 设置请求头中的 Content‐Type 为 application/x‐www‐form‐urlencoded
    // 标识此次请求的请求体格式为 urlencoded 以便于服务端接收数据
    xhr.setRequestHeader('Content‐Type', 'application/x‐www‐form‐urlencoded')
    // 需要提交到服务端的数据可以通过 send 方法的参数传递
    // 格式:key1=value1&key2=value2
    xhr.send('key1=value1&key2=value2')
    xhr.onreadystatechange = function () {
        if (this.readyState === 4) {
            console.log(this.responseText)
        }
    }
	//要注意的是设置请求头必须是在open()之后

3jQuery中的ajax方法

3.1ajax方法

    $.ajax({
        url: './get.php',//请求路径
        type: 'get',//请求类型
        dataType: 'json',//请求数据格式
        data: {
            id: 1//上传参数
        },
        beforeSend: function (xhr) {//send()之前触发的函数
            console.log('before send')
        },
        success: function (data) {//请求成功的函数
            console.log(data)
        },
        error: function (err) {//请求失败的函数
            console.log(err)
        },
        complete: function () {//请求完成触发(不管成功与否)
            console.log('request completed')
        }
    })

3.2 $.get

GET 请求快捷方法

3.3 $.post

POST 请求快捷方法

3.4 $.load

$(selector).load()

4 跨域

同源策略是浏览器的一种安全策略,所谓同源是指域名,协议,端口完
全相同,只有同源的地址才可以相互通过AJAX或者js 的方式请求(但HTML、css不影响)

4.1解决方案

1)后端设置响应头

在后台设置响应头,允许跨域

header(‘Access-Control-Allow-Origin:*’);//允许所有来源访问–>允许所有的语言对我这个语言发起请求
如果你想指定一个具体的语言的话, 把 * 换成 请求过来的协议+主机名+端口号

header(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式

2)利用jsonp技术

使用jsonp实现跨域请求
利用script标签中src属性, 设置请求的地址, 因为src是HTML标签不受同源策略的约束

<script src="http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction"></script>

或者使用jQuery封装好的ajax函数

5ajax特点

异步加载,局部刷新。

同步: 一次一个, 前一个没有执行完成, 后一个不能开始

异步: 一次一堆, 前一个没有执行完成, 后一个也能开始

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值