使用
$.getJSON();
或
$.post();
我正在尝试通过仅适用于AJAX请求的页面发送一些参数 并在JSON或html代码段中获得一些结果。
我想知道哪一个更快?
假设HTML文件只是简单的布尔文本(true或false)
答案 0 :(得分:6)
正如其他人所说,两个功能之间没有真正的区别,因为它们都将由XMLHttpRequest
发送。
如果服务器使用相同的代码处理两个请求,则处理时间应该相同。
因此,问题可以转换为哪一个更快的HTTP GET请求或POST请求?
由于POST请求需要两个额外的HTTP标头(Content-Type
和Content-Length
),因此与GET请求相比,后者应该更快(因为传输的数据更少)。
但这只是速度,我认为最好遵循REST指南。如果要修改某些内容,请使用POST,如果要获取内容,请使用GET。
另一个重要的事情是,GET响应可以缓存,但我有problems caching POST个。
答案 1 :(得分:3)
我不认为使用ajax
,.post
使用http post
请求加载数据会有所不同,getJSON
使用http get
getJSON
请求更多,不必明确告诉dataType
{{1}}
答案 2 :(得分:3)
如果是从服务器检索数据而不持久(更新)任何内容的HTTP操作,则GET是正确的语义。
发布并使用HTTP,因此性能差异可以忽略不计,特别是考虑到WAN通信的变量。
答案 3 :(得分:2)
它们都是jQuery.ajax的包装/速记方法,所以不会有性能差异。
答案 4 :(得分:2)
这已经过时了......
我们都必须记住:CSRF / XSRF。
如果你这样做:
$.ajax({ type: "POST", dataType: "json", url: url, data: { token : 'pass-some-security-token-here' }, cache: false, success: function(data) { //do your stuff here } });
你可以像这样接收它,使大多数CSRF / XSRF无效
if (isset($_POST['token'])) { //you can also test token further //do your stuff her and send back result } else { //error: sorry, invalid, or no security token }
在许多情况下,GET是对坏人的邀请,因为getJSON使用GET HTTP请求。
答案 5 :(得分:1)
$.getJSON()
;是$.ajax();
的快捷方式,它也会调用$.post();
,因此您不会看到太多差异(但直接使用$.getJSON()
会更容易)。
请参阅jquery doc
[编辑] NimChimpsky比我快......
答案 6 :(得分:0)
没有区别,因为两者都使用XMLHttpRequest。
首先,$.getJSON()
是速记Ajax函数,等效于:
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
https://api.jquery.com/jQuery.getJSON/
第二,$。post()也是Ajax的简写功能,等效于:
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});