Ajax get和post區別介紹

來源:互聯網
上載者:User

1、 get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。

2、 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。兩種方式的參數都可以用Request來獲得。

3、get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,因伺服器的不同而異.

4、get安全性非常低,post安全性較高。

5、 <form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一樣的,也就是說,method為get時action頁面後邊帶的參數列表會被忽視;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一樣的

學習 Ajax 的 Post,程式效果請參看 Ajax 的 Post 傳值。

 代碼如下 複製代碼

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Post 傳值</title>
</head>

<script language="javascript">
function saveUserInfo()
{
 //擷取接受返回資訊層
 var msg = document.getElementById("msg");

 //擷取表單對象和使用者資訊值
 var f = document.user_info;
 var userName = f.user_name.value;
 var userAge   = f.user_age.value;
 var userSex   = f.user_sex.value;

 //接收表單的URL地址
 var url = "ajax_output1.php";

 //需要POST的值,把每個變數都通過&來聯結
 var postStr   = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

 //執行個體化Ajax
 //var ajax = InitAjax();


 var ajax = false;
 //開始初始化XMLHttpRequest對象
 if(window.XMLHttpRequest)
 {  //Mozilla 瀏覽器
  ajax = new XMLHttpRequest();
        if (ajax.overrideMimeType)
  { //設定MiME類別
            ajax.overrideMimeType("text/xml");
        }
 }
 else if (window.ActiveXObject)
 {  // IE瀏覽器
  try
  {
   ajax = new ActiveXObject("Msxml2.XMLHTTP");
     }
  catch (e)
  {
         try
   {
             ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }
   catch (e) {}
         }
 }
    if (!ajax)
 {  // 異常,建立對象執行個體失敗
  window.alert("不能建立XMLHttpRequest對象執行個體.");
  return false;
 }

 //通過Post方式開啟串連
 ajax.open("POST", url, true);

 //定義傳輸的檔案HTTP頭資訊
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

 //發送POST資料
 ajax.send(postStr);

 //擷取執行狀態
 ajax.onreadystatechange = function()
 {
     //如果執行狀態成功,那麼就把返回資訊寫到指定的層裡
     if (ajax.readyState == 4 && ajax.status == 200)
  {
      msg.innerHTML = ajax.responseText;
     }
 }
}
</script>

<body >
<div id="msg"></div>
<form name="user_info" method="post" action="">
姓名:<input type="text" name="user_name" /><br />
年齡:<input type="text" name="user_age" /><br />
性別:<input type="text" name="user_sex" /><br />
<input type="button" value="提交表單" onClick="saveUserInfo()">
</form>
</body>
</html>

然後是 Ajax 的 Get,用途是從伺服器擷取值。

程式效果請參看 Ajax 的 Get 傳值。

 代碼如下 複製代碼

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Get 傳值</title>
</head>

<script language="javascript">
function saveUserInfo()
{
 //擷取接受返回資訊層
 var msg = document.getElementById("msg");

 //擷取表單對象和使用者資訊值
 var f = document.user_info;
 var userName  = f.user_name.value;
 var userAge   = f.user_age.value;
 var userSex   = f.user_sex.value;

 //接收表單的URL地址
 var url = "ajax_output2.php? user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

 //執行個體化Ajax
 //var ajax = InitAjax();

 var ajax = false;
 //開始初始化XMLHttpRequest對象
 if(window.XMLHttpRequest)
 {
  //Mozilla 瀏覽器
        ajax = new XMLHttpRequest();
        if (ajax.overrideMimeType)
  {//設定MiME類別
         ajax.overrideMimeType("text/xml");
  }
 }
 else if (window.ActiveXObject)
 {  // IE瀏覽器
     try
  {
         ajax = new ActiveXObject("Msxml2.XMLHTTP");
        }
  catch (e)
  {
   try
   {
             ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
 }
    if (!ajax)
 {  
  // 異常,建立對象執行個體失敗
        window.alert("不能建立XMLHttpRequest對象執行個體.");
        return false;
    }              

 //通過Post方式開啟串連
 ajax.open("GET", url, true);

 //發送GET資料,已經在URL中賦了值所以send那裡只要加個空參.
 ajax.send(null);

 //擷取執行狀態
 ajax.onreadystatechange = function()
 {
     //如果執行狀態成功,那麼就把返回資訊寫到指定的層裡
     if (ajax.readyState == 4 && ajax.status == 200)
  {
      msg.innerHTML = ajax.responseText;
     }
 }
}
</script>

<body>
<div id="msg"></div>
<form name="user_info" method="post" action="">
<input type="text" name="user_name" style="display:none;" />
<input type="text" name="user_age" style="display:none;" />
<input type="text" name="user_sex" style="display:none;" />
<input type="button" value="擷取伺服器變數" onClick="saveUserInfo()">
</form>
</body>

ajax_output2.php

 代碼如下 複製代碼
<?
  $user_name = "Gonn";
  echo $user_name;
  $user_age = "24";
  echo $user_age;
  $user_sex = "Man";
  echo $user_sex;
?>



總結


現在我們再看看通過URL發送請求時,get方式和post方式的區別。用下面的例子可以很容易的看到同樣的資料通過GET和POST來發送的區別, 發送的資料是 username=張三 :
GET 方式, 瀏覽器鍵入 http://localhost?username=張三

 代碼如下 複製代碼


GET /?username=%E5%BC%A0%E4%B8%89 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive

POST 方式:

 代碼如下 複製代碼

POST / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Content-Length: 28
Connection: Keep-Alive

username=%E5%BC%A0%E4%B8%89

相關文章

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.