核心要點
GET與POST
何時使用GET
如果表單處理是冪等的(即對世界狀態沒有持久可觀察的影響),則表單方法應為GET。許多數據庫搜索沒有明顯的副作用,是查詢表單的理想應用。
GET的特點:
[W3.org GET方法定義](此處應插入W3C GET方法定義鏈接)
何時使用POST
如果與表單處理相關的服務具有副作用(例如,修改數據庫或訂閱服務),則方法應為POST。
處理長請求時可以使用POST——如果發送大量數據或通過HTTPS發送敏感數據,則應使用POST。某些瀏覽器(如Internet Explorer)對URL字符串長度有限制,因此如果使用GET,某些表單的操作可能會中斷。
以下操作可能需要考慮使用POST:
[W3.org POST方法定義](此處應插入W3C POST方法定義鏈接)
AJAX調用中的GET與POST
除非向服務器發送敏感數據或調用正在處理服務器上數據的腳本,否則AJAX調用更常用GET。這是因為在使用XMLHttpRequest時,瀏覽器將POST實現為兩步過程(先發送標頭,然後發送數據)。這意味著GET請求響應更快——這是AJAX環境中需要的!由於“Ajax”請求受同源策略的限制,因此使用GET而不是POST的安全風險有限。使用GET從服務器“獲取”信息,例如加載JavaScript文件(可以使用AJAX簡寫函數$.getScript()
)或加載JSON文件(可以使用AJAX簡寫函數$.getJSON()
)。
使用GET作為默認值的jQuery AJAX函數:$.get()
、$.getScript()
、$.getJSON()
、.load()
使用POST作為默認值的jQuery AJAX函數:$.post()
GET AJAX調用示例——調用PHP腳本以獲取Twitter關注者數量
$.ajax({ url: 'getTwitterFollowers.php', type: 'GET', data: 'twitterUsername=jquery4u', success: function(data) { // 成功时调用 $('#ajaxphp-results').html(data); }, error: function(e) { // 发生错误时调用 //console.log(e.message); } });
POST AJAX調用示例——提交登錄表單
var $form = $("#myForm"); var url = $form.attr("action") + "?" + $form.serialize(); $("#" + id).html(url); $.ajax({ type: "POST", url: action, data: $form, success: function(response) { if (response == 'success') $("#myForm").slideUp('slow', function() { $("#msg").html("You have logged in successfully!"); }); else $("#msg").html("Invalid username and/or password."); } });
其他閱讀材料
表單提交示例 此示例並不真正適用於AJAX,因為這些請求是在後台發生的,但它可能有助於您進一步了解不同請求類型之間發生的情況。使用GET時,會生成HTTP請求並將數據作為附加到URL中的查詢字符串中的一組編碼參數傳遞到Web服務器。例如,對登錄表單提交使用GET是個壞主意,因為登錄詳細信息將顯示在地址欄中。
<code>GET /login.php?username=user&password=12345 HTTP/1.1 Host: domain.com</code>
但是,如果我們使用POST,參數將通過HTTP請求的主體傳遞,而不是URL。這將發生在瀏覽器和Web服務器之間的後台。
<code>POST /login.php HTTP/1.1 Host: domain.com username=user&password=12345</code>
GET緩存 GET旨在用於讀取要顯示在頁面上的信息。瀏覽器將緩存GET請求的結果,如果再次發出相同的GET請求,它們將顯示緩存的結果,而不是重新運行整個請求。
REST——“RESTful”客戶端服務器架構 例如,HTTP在動詞(或“方法”)、URI、Internet媒體類型、請求和響應代碼等方面具有非常豐富的詞彙。 REST使用HTTP協議的這些現有功能,因此允許現有的分層代理和網關組件執行網絡上的其他功能,例如HTTP緩存和安全強制。
閱讀有關“表述性狀態轉移”(REST)的信息:http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_example:_the_World_Wide_Web
REST——“RESTful”Web服務(API) 它是一組資源,具有四個定義的方面:Web服務的基URI,例如http://example.com/resources/
;Web服務支持的數據的Internet媒體類型。這通常是JSON、XML或YAML,但可以是任何其他有效的Internet媒體類型;使用HTTP方法(例如,POST、GET、PUT或DELETE)支持的Web服務的操作集;API必須是超文本驅動的。 [11]
[https://www.php.cn/link/13da2193bcd455bb894871aec1815047 Web服務鏈接)
結論
我希望您已經清楚地了解了何時使用GET以及何時使用POST。如果您仍然不確定或想檢查AJAX調用的後臺情況,請使用Firebug NET面板之類的工具查看數據發送的位置(例如在標頭中)以及請求的類型。除此之外,祝您AJAX編程愉快!
關於AJAX GET和POST方法的常見問題解答(FAQ)
(此處應根據原文FAQ部分,逐條用更簡潔的語言重新組織並翻譯) 由於篇幅限制,此處省略FAQ部分的翻譯。 請提供原文FAQ部分,我可以幫你翻譯成簡潔的版本。
以上是jQuery ajax差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!