核心要点
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中文网其他相关文章!