ajax xmlhttp下open方法POST、GET參數的區別

來源:互聯網
上載者:User

1. get是從伺服器上擷取資料(會暴露用戶端ip),post是向伺服器傳送資料。
2. get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
3. 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。
4. get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
5. get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。

建議:

1、get方式的安全性較Post方式要差些,包含機密資訊的話,建議用Post資料提交方式;
2、在做資料查詢時,建議用Get方式;而在做資料添加、修改或刪除時,建議用Post方式;


1 問題描述:
xmlhttp:open方法,請求頁面的時候,更新頁面資料後,第2次拿到的結果還是上次的資訊
2 解決辦法:
改用POST方式
3 說明:
xmlhttp:open方法
建立一個新的http請求,並指定此請求的方法、URL以及驗證資訊
文法

oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
參數

bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。
/*****
POST:用"POST"方式發送資料,可以大到4MB
GET:用"GET"方式發送資料,只能256KB
如果請求帶有參數的化實用POST方式,POST方式將參數放置在頁面的隱藏控制項內
沒有參數使用GET方式
對於請求的頁面在中途可能發生更改的,也最好用POST方式
用GET方式可能會拿不到最新的資訊
*****/
bstrUrl
請求的URL地址,可以為絕對位址也可以為相對位址。
varAsync[可選]
布爾型,指定此請求是否為非同步方式,預設為true。如果為真,當狀態改變時會調用onreadystatechange屬性指定的回呼函數。
bstrUser[可選]
如果伺服器需要驗證,此處指定使用者名稱,如果未指定,當伺服器需要驗證時,會彈出驗證視窗。
bstrPassword[可選]
驗證資訊中的密碼部分,如果使用者名稱為空白,則此值將被忽略。

Example

下面的例子示範從伺服器請求book.xml,並顯示其中的book欄位。

 代碼如下 複製代碼

var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET","http://localhost/books.xml", false); 沒有參數且不會發生改變的用GET,否則用POST
xmlhttp.send();
var book = xmlhttp.responseXML.selectSingleNode("//book[@id=''''bk101'''']");
alert(book.xml);

備忘

調用此方法後,可以調用send方法向伺服器發送資料。

調用頁面

 代碼如下 複製代碼

<script language="javascript" type="text/javascript">
function UpdateData()
{
var ServerUrl = window.location.href;
var str = ServerUrl.split("/");
var ServerUrl = "http://"+str[2];
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var serverURL=ServerUrl+"/GetTemp.aspx";
xmlhttp.Open("POST",serverURL, false);
xmlhttp.Send("adst");
xmlhttp = null;
}
</script>

處理頁面,得到傳入的資料

 代碼如下 複製代碼

private string GetInput()
{
System.IO.Stream s = Request.InputStream;
int count = 0;
byte[] buffer = new byte[1024];
StringBuilder builder = new StringBuilder();
while ((count = s.Read(buffer, 0, 1024)) > 0)
{
builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
}

return builder.ToString();
}

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。