$.ajax()
与$.get()
和$.load()
之间有什么区别?
哪种更好用,在什么条件下使用?
答案 0 :(得分:226)
$.ajax()
是最可配置的,您可以在其中获得对HTTP标头等的细粒度控制。您还可以使用此方法直接访问XHR对象。还提供了稍微更精细的错误处理。因此可能更复杂,而且往往是不必要的,但有时非常有用。您必须使用回调处理返回的数据。
$.get()
只是$.ajax()
的简写,但是摘要了一些配置,为它隐藏的内容设置了合理的默认值。将数据返回给回调。它只允许GET请求,因此伴随着类似抽象的$.post()
函数,仅用于POST
.load()
与$.get()
类似,但添加了一些功能,允许您定义文档在何处插入返回的数据。因此,实际上只有在调用只会导致HTML时才可用。它被称为与其他全局调用略有不同,因为它是一个绑定到特定jQuery包装的DOM元素的方法。因此,人们会这样做:$('#divWantingContent').load(...)
应该注意的是,所有$.get()
,$.post()
,.load()
都只是$.ajax()
的包装,因为它是在内部调用的。
jQuery的Ajax文档中的更多细节:http://api.jquery.com/category/ajax/
答案 1 :(得分:29)
这些方法提供了不同的抽象层。
$.ajax()
可让您完全控制Ajax请求。如果其他方法没有满足您的需求,您应该使用它。
$.get()
执行Ajax GET
请求。返回的数据(可以是任何数据)将传递给您的回调处理程序。
$(selector).load()
将执行Ajax GET
请求,并将设置所选返回数据的内容(应该是文本或HTML)。
这取决于您应该使用哪种方法的情况。如果你想做简单的事情,就不需要打扰$.ajax()
。
E.g。如果返回的数据是JSON需要进一步处理,则不会使用$.load()
。在这里,您可以使用$.ajax()
或$.get()
。
答案 2 :(得分:9)
http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
描述:执行异步HTTP(Ajax)请求。
完整的monty,允许您发出任何类型的Ajax请求。
http://api.jquery.com/jQuery.get/
jQuery.get()
描述:使用HTTP GET请求从服务器加载数据。
只允许您发出HTTP GET请求,只需要少一点的配置。
.load()
描述:从服务器加载数据并将返回的HTML放入匹配的元素中。
专门用于获取数据并将其注入元素。
答案 3 :(得分:8)
非常基本但是
$.load()
:将一段html加载到容器DOM中。$.get()
:如果您想进行 GET 调用并广泛使用回复,请使用此功能。$.post()
:如果您想进行 POST 调用并且不想将响应加载到某个容器DOM,请使用此选项。$.ajax()
:如果您需要在XHR失败时执行某些操作,或者您需要动态指定ajax选项(例如,cache:true),请使用此选项。答案 4 :(得分:4)
重要说明: jQuery.load()方法不仅可以获取,还可以执行 POST 请求,如果提供了数据参数(请参阅:http://api.jquery.com/load/)
数据类型:PlainObject或String随请求一起发送到服务器的普通对象或字符串。
请求方法如果数据是作为提供的,则使用 POST 方法 宾语;否则,假设 GET 。
Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
答案 5 :(得分:3)
每个人都是对的。函数.load
,.get
和.post
是使用函数.ajax
的不同方式。
就个人而言,我发现.ajax原始函数非常混乱,并且更喜欢在我需要时使用load,get或post。
POST具有以下结构:
$.post(target, post_data, function(response) { });
GET具有以下内容:
$.get(target, post_data, function(response) { });
LOAD具有以下内容:
$(*selector*).load(target, post_data, function(response) { });
正如您所看到的,它们之间几乎没有差异,因为情境决定使用哪一个。需要在内部将信息发送到文件吗?使用.post(这是大多数情况)。需要以可以提供特定时刻链接的方式发送信息吗?使用.get。它们都允许回调,您可以在其中处理文件的响应。
一个重要的注意事项是.load以两种不同的方式行事。如果你只提供目标文档的url,它将 act 作为get(我说是act,因为我测试了在调用PHP中检查$_POST
,同时使用默认的.load行为和它检测到$_POST
,而不是$_GET
;也许更准确地说它没有任何参数就是.post;但是,正如http://api.jquery.com/load/所说,一旦你为函数提供了一个参数数组,它就会将信息发布到文件中。无论是什么情况,.load函数都会直接将信息插入到DOM元素中,在很多情况下它非常清晰,非常直接;但如果你想用响应做更多的事情,仍然会提供一个回调。此外,.load允许您从文件中提取某个代码块,使您可以保存目录,例如,在html文件中,并将其中的部分(项)直接检索到DOM元素中。
答案 6 :(得分:2)
$.get = $.ajax({type: 'GET'});
$.load()
是一个辅助函数,只能在元素上调用。
$.ajax()
为您提供最大程度的控制权。您可以指定是否要POST数据,获得更多回调等。
答案 7 :(得分:1)
两者都用于发送一些数据并使用该数据接收一些响应。
GET :获取存储在服务器中的信息。 (即搜索,推文,人员信息)。如果你想发送信息,那么使用process.php?name=subroto
获取请求发送请求所以它基本上通过url发送信息。网址无法处理超过2036个字符。那么对于博客文章你能记住它是不可能的吗?
POST :发布与GET相同的内容。用户注册,用户登录,大数据发送,博客帖子。 如果您需要发送安全信息,请使用post或大数据,因为它不通过url。
AJAX :$.get()
和$.post()
包含$.ajax()
子集的功能。它有更多的配置。
$.get ()
方法,这是$.ajax()
的一种简写。使用$.get ()
时,不是传入对象,而是传递参数。至少,您需要前两个参数,即您要检索的文件的URL(例如 test.txt)和成功回调。
答案 8 :(得分:0)
每个人都很好地解释了这个话题。还有一点我想添加.load()方法。
根据Load document,如果在数据网址中添加后缀选择器,则在加载内容时不会执行脚本。
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
另一方面,在url中删除选择器后,将运行新内容中的脚本。试试this example
删除index.html文件中的url中的#content
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
讨论中没有其他方法提供的内置功能。</ p>