ajax的post或者get伺服器請求
XMLHttpRequest 物件用於和伺服器交換資料。
如果想要將請求傳送到伺服器,需要使用XMLHttpRequest物件的open()和send()方法。
一.get和post區別:
get方式可能速度比較快,並且適用性也很強,但是很多時候還是需要用post。
推薦使用post方式的場景如下:
(1).不期望使用快取檔案(更新伺服器上的檔案或資料庫)。
(2).向伺服器傳送大量資料(POST沒有資料量限制)。
(3).傳送包含未知字元的使用者輸入時,POST比GET更穩定也更可靠。
二.get方式:
先看一個get方式程式碼:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "demo/ajax/net/demo.aspx", true); xmlhttp.send(); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
在上面的程式碼中,點選按鈕可以獲取伺服器的當前日期時間,c#程式碼如下:
[C#] 純文字檢視 複製程式碼using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ajax { public partial class demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write(System.DateTime.Now); } } }
特別說明:上面的方式在IE瀏覽器可能會從快取中讀取資料,也就是說當第一點選按鈕正常獲取時間日期之後,以後的點選會沒有任何效果,在谷歌或者火狐等瀏覽器中並沒有此中問題,解決方案如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "demo/ajax/net/demo.aspx?rnd=" + Math.random(), true); xmlhttp.send(); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
解決方式非常的簡單,就是在url後面新增一個隨機數就可以了,這樣每次請求都被認為是一個新的url,於是就不會快取了。
也可以使用GET方式傳送資訊,可以通過url傳送資訊,程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "demo/ajax/net/demoPara.aspx?webName="+escape("螞蟻部落")+"&age=3", true); xmlhttp.send(); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
點選按鈕可以獲取指定的內容,下面是c#程式碼:
[C#] 純文字檢視 複製程式碼using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ajax { public partial class demoPara : System.Web.UI.Page { string webName; int age; protected void Page_Load(object sender, EventArgs e) { webName =Server.UrlDecode(Request.QueryString["webName"]); age = Convert.ToInt32(Request.QueryString["age"]); Response.Write("歡迎來到" + webName + ",本站已經成立" + age + "週年。"); } } }
三.POST 請求:
看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("POST", "demo/ajax/net/demo.aspx", true); xmlhttp.send(); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
上面的程式碼利用post方式獲取伺服器的當前時間日期,不存在使用get方式的快取問題。
如果需要像HTML表單那樣POST資料,可以使用setRequestHeader()來新增HTTP頭,然後在send()方法中規定傳送的資料:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("POST", "demo/ajax/net/postParam.aspx", true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("webName=螞蟻部落&age=3"); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
setRequestHeader()相關內容可以參閱XMLHttpRequest setRequestHeader方法一章節。
相關文章
- 原生js實現Ajax請求,包含get和postJS
- ajax 請求的時候 get 和 post 方式的區別?
- get請求和post請求的區別
- get與post的請求區別
- uni-app的POST請求和GET請求APP
- POST與GET請求區別
- vue 發起get請求和post請求Vue
- SpringMVC中如何傳送GET請求、POST請求、PUT請求、DELETE請求。SpringMVCdelete
- axios 發get,post 請求小結iOS
- Java Http Get Post 請求工具類JavaHTTP
- go對get、post請求封裝Go封裝
- java傳送GET和post請求Java
- get,post URL加字尾請求
- ajax中POST請求與引數(請求體)設定
- http請求之get和post的區別HTTP
- get和post請求的區別(面試)面試
- Linux curl 命令模擬 POST/GET 請求Linux
- httprequest- post- get -傳送請求HTTP
- file_get_contents傳送post請求
- 介面請求 (get、post、head 等) 詳解
- 介面請求(get、post、head等)詳解
- Python爬蟲(5-10)-編解碼、ajax的get請求、ajax的post請求、URLError/HTTPError、微博的cookie登入、Handler處理器Python爬蟲ErrorHTTPCookie
- vue2.0 axios post請求傳參問題(ajax請求)VueiOS
- vue axios資料請求get、post方法的使用VueiOS
- http請求中get和post方法的區別HTTP
- jQuery – AJAX get() 和 post() 方法jQuery
- postman(二):使用postman傳送get or post請求Postman
- 優雅地使用GET和POST請求方法
- python3 實現 get 和 post 請求Python
- RestTemplate exchange GET POST請求傳引數DEMOREST
- Python中get、post請求詳解(HTTP請求頭、狀態碼)PythonHTTP
- GET和POST兩種基本請求方法的區別
- 前端常見的請求資料彙總(GET POST)前端
- 4.爬蟲 requests庫講解 GET請求 POST請求 響應爬蟲
- Http請求get與post請求方式的各種相關面試總結HTTP面試
- cURL實現傳送Get和Post請求(PHP)PHP
- GET和POST方式請求API介面資料返回API
- 網路通訊5:執行HTTP的GET/POST請求HTTP