前端開發的ajax

pro-xiaoy發表於2019-03-11

[# ajax

如何發出請求

  • form表單action發出請求,重新整理頁面
  • a標籤的href, 重新整理或者跳轉
  • img標籤src,可以通過onload和onerror
  • script標籤src,可以通過動態建立script,jsonp用法

微軟

IE5率先在js中引入ActiveX物件[這個東西我的確用過簡單說下,在IE8中如果想呼叫CMD操作讓IE跳往谷歌可以用這個物件],之後各大瀏覽器廠商模仿寫出xmlhttprequest。

AJAX

AJAX非同步的javascript+xml

使用ajax

    var xhr = new XMLHttpRequest();
    xhr.open(method, url) // 啟動
    xhr.onreadystatechange = function(){
        if (xhr.readyState==4){ // 響應完畢
            console.log(xhr.status);
            if(xhr.status >= 200 && xhr.status < 300) {
                console.log('請求成功');
                var string = xhr.responseText
            }
        }
    }
    xhr.send() // 發出
複製程式碼

封裝ajax

    window.$  = window.jquery;
    window.jquery = {
        ajax: function({url, method, header, body}){
            return new Promise((reject, resolve) => {
                var xhr = new XMLHttpRequest();
                xhr.open(method, url)
                Object.keys(header).forEach( key => {
                    xhr.setRequestHeader(key, header[key])
                })
                xhr.onreadystatechange = function(){
                    if (xhr.readyState==4){ // 響應完畢
                        console.log(xhr.status);
                        if(xhr.status >= 200 && xhr.status < 300) {
                            reject.call(undefined, xhr.responseText)
                        } else {
                            resolve.call(undefined, xhr.responseText)
                        }
                    }
                }  
            })
            xhr.send(body) 
        }        
    }
    jquery.ajax().then()
複製程式碼

相關文章