數據交互 http請求 xhr


web瀏覽器通過http請求來獲取服務器的數據或服務,http請求是一種無狀態連接,用完即關閉,再用需重連接。這么設計能極大地減輕服務器壓力。

 

HTTP請求:
  一個http請求分為以下7個步驟:
  1,建立TCP連接
  2,瀏覽器向服務器發送請求命令
  3,瀏覽器想服務器發送請求頭信息
  4,服務器響應
  5,服務器發送響應頭信息
  6,服務器向瀏覽器發送數據
  7,服務器關閉TCP連接

 

HTTP請求之請求request:
  一個http請求一般由4個部分組成:
  1,http請求的方法,常見的有get和post
  2,請求的url
  3,請求頭信息,包括一些瀏覽器信息和用戶身份信息等
  4,請求體,即請求正文,包括一些用戶的查詢信息,表單信息等。請求頭和請求體有一個空行來分開。

 

以下是一個請求體示例:

  get方法,請求地址,協議版本
  GET/login.php HTTP/1.1
  以下是請求頭信息
  Host:localhost
  Connecction:keep-alive
  Accept:text/javascript,application/javascript,application/ecmascript,application/x-ecmascript;q=0.01
  X-Requser-With:XMLHttpRequest
  User-Agent:Mozilla/5.0(Windows NT 6.1)
  Referer:http://www.baidu.com
  Accept-Encoding:gzip,ddeflate,sdcn
  Accept-Langauage:zh-CN,zh,q=0.8,en;q=0.6
  // 空行斷開請求頭和請求體
  以下是請求體信息
  username=admin&pwd=123456

 

請求方法:
  常見的請求方法有get和post,
  get
    一般用於信息獲取
    參數附加在url上,人人可見
    參數大小有限制
  post
    一般用於修改服務器資源
    參數打包發送,一般不可見
    參數大小理論上無限制

 

HTTP請求之響應response:
  一個http響應一般由3個部分組成:
  1,狀態碼,告訴瀏覽器請求成功與否
  2,響應頭,和請求頭一樣,包含了一些環境信息,比如服務器類型,響應內容類型等
  3,響應體,響應正文

 

以下是一個響應體示例:
  狀態碼
  HTTP/1.1 200 OK
  響應頭
  Date:Sun,23 Now 2017 10:15:33 GMT
  Server:Apache
  Content-Encoding:gzip
  Content-Length:8548484
  Connecction:keep-alive
  Content-Type:application/javascript
  // 空行斷開響應頭和響應體
  // 響應體
  alert('test')

 

    //實例化xhr對象
    var xhr = new xmlHttpRequest()
    //載入請求open方法:請求方式,請求地址,是否異步
    xhr.open(method,url,asncy)
    //發送:get方法時,不用發送string或發送null,post則需要寫入發送的數據。
    xhr.send(string)
        //eg.
        //get:
        xhr.open('GET','get.php',true)
        xhr.send()
        //post:
        xhr.open('POST','user.php',true)
        // post需要在請求頭里指定發送數據的類型,下面是表單類型
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
        // send里填參數即可
        xhr.send('name=hhh&pwd=123456')
    //監聽狀態變化
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4&&xhr.status ===200){
            // 處理響應正文responseText,多數是json數據
            alert(xhr.responseText)
        }
    }

 

請求狀態碼:xhr.readyState
  0 請求未初始化,open方法未調用
  1 連接已建立,open已經調用,正在發送請求
  2 請求已經接收了,即接收了請求頭信息
  3 解析 接收解析響應的內容
  4 解析完成 瀏覽器可以使用返回來的數據了。

http狀態碼:xhr.status
  1xx 信息類,表示已經收到了瀏覽器請求,正在處理
  2xx 成功
  3xx 重定向
  4xx 客戶端錯誤,比如可能發送了一個無效url
  5xx 服務端錯誤

 

JSON
  JSON是一個現在服務器和瀏覽器數據交互的常用格式,JSON數據可以簡單地理解成沒有方法的對象,不過其鍵需要用雙引號包裹。JSON的本質是字符串,所以不能包含有JavaScript代碼。
  JSON的反序列化形式可以直接當成JavaScript對象使用,如.符號或[]訪問屬性
  JSON的序列化形式就是一個字符串。
  JSON.stringify(),JSON.parse()方法分別是用於JSON的序列化和反序列化

以下是一個JSON示例:

    {
        "nama":"zhouxiaohouer",
        "age":23,
        "data":[
            {
                "proid":112344,
                "proname":"小米6"
            },
            {
                "proid":112345,
                "proname":"小米7"
            }
        ]
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM