Javascript Ajax總結——GET請求和POST請求

一、GET請求
GET最經常使用於向服務器查詢信息。可在URL末尾添加查詢字符串參數。
XHR中,傳入open()方法的URL末尾的查詢字符串必須通過正確的編碼,使用encodeURIComponent()編碼。全部名-值對兒必須由和號(&)分隔。
如:
xhr.open("get", "test.php?name1=value1&name2=value2", true);
向URL末尾添加查詢字符串參數:
 function addURLParam(url, name, value){
        url += (url.indexOf("?") == -1 ? "?" : "&");
        url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
        return url;
    }
    var url = "test.php";
    //添加參數
    url = addURLParam(url, "name", "Nicholas");
    url = addURLParam(url, "hometown", "shanghai");
    //初始化請求
    xhr.open("get", url, false);

二、POST請求
POST請求向服務器發送應該被保存的數據,把數據做爲請求的主體提交。
POST請求的主體可包含很是多的數據,格式不限。

默認狀況下,服務器對POST請求和提交Web表單的請求會作不一樣的處理。
也可以使用XHR來模仿表單提交
Content-Type頭部信息設置爲application/x-www-form-urlencoded
以適當的格式建立一個字符串
如:
xhr.open("post", "test.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var form = document.getElementById("user");
//serialize()序列化表單數據
xhr.send(serialize(form));

test.php代碼:
<?php
    //設置頭部信息,發送給服務器的數據出如今$_POST超級全局變量中。
    //不然,要訪問一樣的數據,要用$HTTP_RAW_POST_DATA
    header("Content-Type: text/plain");
    echo <<<EOF
        Name: {$_POST["username"]}
    EOF;
?>

注:POST消耗的資源比GET更多。發送相同量的數據,GET的速度最多能夠比POST快一倍。
相關文章
相關標籤/搜索