1、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);
2、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快一倍。