Ajax請求的原理
1.原理:在Ajax請求中,html頁面的中操作將通過Ajax引擎與服務器端進行通訊,然后將返回的結果提交到客戶端頁面的Ajax引擎,再由Ajax引擎來決定將服務器端返回數據插入到頁面的指定位置。從而實現無需刷新頁面的http請求。
2.Ajax請求的優點
?a.最大的優點是,無需刷新就可更新頁面
?b.可以把原先服務器端負擔的工作的轉移客戶端,利用客戶端的閑置資源進行處理,減輕服務器和帶寬的負擔,節約空間和成本
?c.Ajax沒有平臺限制。Ajax把服務器由原先的傳送內容轉變為傳輸數據,而數據格式可以為純文本和XML格式,這兩種格式沒有平臺限制。
?d.可以調用Xml等外部數據,進一步促進頁面的顯示和數據的分離
3.Ajax使用的技術
?a.XMLHttpRequest對象
?b.XML
?c.JavaScript
?d.Css
?e.DOM
4.Ajax請求時性能的優化
?a.盡量使用局部變量,不要使用全局變量
?b.優化for循環
?c.盡量少使用eval,每次使用eval都會浪費大量時間
?d.將DOM節點附加到文檔上
?e.盡量減少使用點“.”號操作符的使用
?
?
方法get()和post()基本區別:
?
?
兩種在客戶端和服務器端進行請求-響應的常用方法是:GET 和 POST。
?
·?GET?- 從指定的資源請求數據
?
POST?- 向指定的資源提交要處理的數據
?
GET 基本上用于從服務器獲得(取回)數據。注釋:GET 方法可能返回緩存數據。
?
POST 也可用于從服務器獲取數據。不過,POST 方法不會緩存數據,并且常用于連同請求一起發送數據。
?
?
?
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">是不一樣的。
?
JQeury的3種實現方式
1.?$.ajax(?) 語法:$.ajax({鍵值對});
2.??$.get():發送get請求:語法:$.get(url, [data], [callback], [type])
url:請求路徑
Data:請求參數,即?發送的數據 ?{key:value}形式 ,
Callback:成功時的回調函數 function(result){} ?result 后臺返回的數據 ?,
Type:響應結果的類型:?返回的數據類型 ?默認為 text ,可以設為 json text
3. $.post():發送post請求?:* 語法:$.post(url, [data], [callback], [type])
?
?
通過jQuery發送ajax請求,在代碼和使用上談談post和get的區別:
jQuery get() 和 post() 方法用于通過 HTTP GET 或 POST 請求從服務器請求數據。?
代碼區別
1.?get 方式 發送請求?語法:?$.get(url,data,callback,type);
?url:請求路徑
Data:請求參數,即?發送的數據??{key:value}形式 ,
Callback:成功時的回調函數?function(result){} ?result 后臺返回的數據 ?,
Type:響應結果的類型:?返回的數據類型??默認為?text ,可以設為 json text
2.?post 方式 發送請求?語法: $.post(url,data,callback,type);
$.get()方法:?使用GET方式執行Ajax請求,從服務器加載數據。形式:$.get(url, data, func, dataType)
$.post()方法:使用POST方式執行Ajax請求,從服務器加載數據。形式:$.post(url, data, func, dataType);
可選參數:
1)url:鏈接地址,字符串表示
2)data:需要發送到服務器的數據,格式為{A: '...', B: '...'}
3)func:請求成功后,服務器回調的函數;function(data, status, xhr),其中data為服務器回傳的數據,status為響應狀態,xhr為XMLHttpRequest
4)dataType:服務器返回數據的格式
2.Ajax的Get和Post的使用區別:
總結:
1)GET方式?傳送數據量小,安全性低,會被緩存,處理效率高,而post是將參數放在請求的表單體內
2)在向服務器傳參數時,get是將參數直接添加到url后面;而post是將參數放在請求的表單體內
3)當請求無副作用時(如進行搜索),便可用GET方法;當請求有副作用時(如添加數據行),則用POST方法。post適合大量數據(不受url長度限制)和需要安全的數據傳輸(傳輸的數據不會在url上出現)?
?
?
?
?
使用post發送請求注意設置,post默認發送方式是application/x-www-form-urlencoded這個就是content-type請求頭類型,如果不指定可能請求會失敗application/x-ww
get請求和post請求在服務器端的區別:
?在客戶端使用get請求時,服務器端使用Request.QueryString來獲取參數,
而客戶端使用post請求時,服務器端使用Request.Form來獲取參數.?
?
???1.Get方式
?? 用get方式可傳送簡單數據,但大小一般限制在1KB下,數據追加到url中發送(http的header傳送),也就是說,瀏覽器將各個表單字段元素及其數據按照URL參數的格式附加在請求行中的資源路徑后面。另外最重要的一點是,它會被客戶端的瀏覽器緩存起來,那么,別人就可以從瀏覽器的歷史記錄中,讀取到此客戶的數據,比如帳號和密碼等。因此,在某些情況下,get方法會帶來嚴重的安全性問題。
總結:GET請求方式:URL傳值的方式進行請求,一般大小限制在1KB(最多只能是1024字節)以下,這個數據會被瀏覽器緩存起來,所以賬號密碼用戶ID肯定是不能這樣傳遞(暴露不安全)
Ajax發送請求:如果是get請求send(參數)參數:必須是null或xhr.send();
??? get請求就不必要設置 xhr.setRequestHeader(header,value)
備注:如果xhr.send(參數);參數不為空情況下,在某些瀏覽器中會自動轉換成post請求方式 您可以通過request.getMethod();方法獲取請求的方式
使用get方式需要注意
????? ????? (1)對于get請求(或凡涉及到url傳遞參數的),被傳遞的參數都要先經(預編碼處理)encodeURIComponent方法處理.
例:var url = "update.php?username=" +encodeURIComponent(username) + "&content=" +encodeURIComponent(content)+"&id=1" ;
?
2.Post方式:
?? ????? 當使用POST方式時,瀏覽器把各表單字段元素及其數據作為HTTP消息????? 的實體內容發送給Web服務器,而不是作為URL地址的參數進行傳遞,使用? POST方式傳遞的數據量要比使用GET方式傳送的數據量大的多
總結:POST請求方式:一般用于發送表單(input這樣的form表單)數據,安全性比get高,數據量也大而且不會被瀏覽器緩存
發送請求:如果是post請求send(參數)參數:參數可以是null或者xhr.send()|send(帶有參數的)post請求在傳遞值的情況下必須 設置 ?? ????? xhr.setRequestHeader(header,value)
?
應用場景:
總結:
1)當請求無副作用時(如進行搜索),便可使用get方法;當請求有副作用時(如添加數據行),則用POST方法。
2)如果調用是要檢索服務器上的數據則使用GET。如果要檢索的值會隨時間和更新進程的改變而改變則要在GET調用中添加一個當前時間參數,這樣后面的調用才不會使用先前的不正確的緩沖。
??如果調用是向服務器發送任意數據,就可以使用POST。POST用于創建資源,資源的內容會被編入HTTP請示的內容中。例如,處理訂貨表單、在數據庫中加入新數據行等。
GET方法應用場景:
* 請求是為了查找資源,HTML表單數據僅用來幫助搜索。
* 請求結果無持續性的副作用。
* 收集的數據及HTML表單內的輸入字段名稱的總長不超過1024個字符。
GET 請求的其他一些注釋:
·?GET 請求可被緩存
·?GET 請求保留在瀏覽器歷史記錄中
·?GET 請求可被收藏為書簽
·?GET 請求不應在處理敏感數據時使用
·?GET 請求有長度限制
·?GET 請求只應當用于取回數據
?
POST方法應用場景:
* 請求的結果有持續性的副作用,例如,數據庫內添加新的數據行。
* 若使用GET方法,則表單上收集的數據可能讓URL過長。
* 要傳送的數據不是采用7位的ASCII編碼。
POST 請求的其他一些注釋:
·?POST 請求不會被緩存
·?POST 請求不會保留在瀏覽器歷史記錄中
·?POST 不能被收藏為書簽
·?POST 請求對數據長度沒有要求
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。