AJAX续

实现jquery.ajax封装

代码:https://github.com/huahua029/jsdemo/tree/master/ajax-jquery

一、用AJAX设置请求

明确HTTP请求报文:请求行+请求头+请求体

设置请求行:open

    request.open('post','/xxx')  //

设置请求头:setRequestHeader方法,

    request.setRequestHeader('Content-Type','x-www-from-urlencoded')

设置请求体:chrome中,若为get方法,则不显示。post方法会显示,设置的请求体

    request.send('我就是要设置request的第四部分')

二、用AJAX获取响应

响应报文的结构:

HTTP/1.1 200 OK
content-type: text/html



获取响应的四部分
获取响应行:status/statusText

console.log(request.status)   // 200
console.log(request.statusText)    //OK

获取响应头: getAllResponseHeaders()/getResponeseHeader('xxx')

    console.log(request.getAllResponseHeaders())

获取响应体:responseText,(不是函数)

console.log(request.responseText)

三、一些问题

1.onreadystatechange事件,
每当 readyState 改变时,就会触发 onreadystatechange 事件。
2.callback (同步)

function f1(){
  console.log('f1')
}
function f3(){
  console.log('f3')
}

function f2(callback){ //f1
  callback()
  console.log('f2')
}

f2(f3)

3.解构赋值
以下是等价的

    // let url = options.url
    // let method = options.method
    // let body = options.body
    // let success = options.success
    // let fail = options.fail

    let { url, method, body, success, fail } = options

4.Promise对象
见阮一峰:http://es6.ruanyifeng.com/#docs/promise

new Promise(function(resolve, reject){})

//第一个参数是resolve的回调函数,第二个参数是reject的回调函数
promise.then()

你可能感兴趣的:(AJAX续)