2010-10-06 178 views
142

$.ajax()$.get()$.load()之间的区别是什么?

哪个更好用,在什么条件下使用?

+0

[$(“#id”).load和$ .ajax?之间的差异可能重复](http://stackoverflow.com/questions/2076642/difference-between-id-load-and-ajax) – Athafoud 2016-03-04 18:54:14

回答

202

$.ajax()是最可配置的一个,您可以通过HTTP头等进行细粒度控制。您也可以使用此方法直接访问XHR对象。还提供了更细粒度的错误处理。因此可能会更复杂,往往不必要,但有时非常有用。你必须用回调自己处理返回的数据。

$.get()只是$.ajax()的简写,但会将一些配置摘要消除,为您隐藏的内容设置合理的默认值。将数据返回给回调。它只允许GET-请求,因此伴随着$.post()功能类似的抽象,只为POST

​​类似于$.get()但增加了功能,它允许您定义在文档中返回的数据将被插入。因此,只有当调用只会导致HTML时才真正可用。它被称为与其他全局调用略有不同,因为它是绑定到特定jQuery包装的DOM元素的方法。因此,一个会做:$('#divWantingContent').load(...)

应当注意的是,所有$.get()$.post(),​​都是为了$.ajax()只是包装,因为它的内部调用。

的jQuery的Ajax的文档中的更多细节:http://api.jquery.com/category/ajax/

+9

是否有任何性能差异? – 2015-09-19 12:57:02

+0

@UzairAli不,它从字面上把你传递给它的变量用来执行jQuery.ajax() – lisburnite 2016-12-14 12:58:57

+0

好的,.load()只是纯HTML,而.get()对于更多的事情是有用的。 – 2017-07-31 20:46:56

6

非常基本的,但

  • $.load():加载一张的HTML到容器DOM中。
  • $.get():如果你想使一个GET通话,并与广泛的响应发挥使用此功能。
  • $.post():如果你想使一个POST电话,不希望加载某些容器DOM的响应使用此功能。
  • $.ajax():如果您需要的时候XHR不能做点什么使用它,或者你需要指定阿贾克斯选项(例如缓存:真)的飞行。
26

方法提供抽象的不同层。

  • $.ajax()为您提供了Ajax请求完全控制。如果其他方法不满足您的需求,您应该使用它。

  • $.get()执行一个Ajax GET请求。返回的数据(可以是任何数据)将传递给您的回调处理程序。

  • $(selector).load()将执行Ajax GET请求,并将设置所选返回数据(应该是文本或HTML)的内容。

这取决于你应该使用哪种方法。如果你想做简单的事情,没有必要打扰$.ajax()

E.g.如果返回的数据是JSON,需要进一步处理,则不会使用$.load()。在这里你可以使用$.ajax()$.get()

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请求,需要少一点配置。


http://api.jquery.com/load/

​​

描述:从服务器加载数据,并把返回的HTML到匹配元素。

专门用于获取数据并将其注入元素。

3

重要提示:jQuery的。负载()方法可以做到不仅GET而且POST请求,如果数据参数被提供(参见:http://api.jquery.com/load/

数据类型:PlainObject或字符串的滑动对象或字符串通过请求发送到服务器。

请求方法POST如果数据作为 对象提供,则使用此方法;否则,假设为GET

Example: pass arrays of data to the server (POST request) 
$("#objectID").load("test.php", { "choices[]": [ "Jon", "Susan" ] }); 
3

大家都说得对。功能.load,.get.post是使用功能.ajax的不同方式。个人而言,我发现.ajax原始函数非常令人困惑,并且更喜欢根据需要使用加载,获取或发布。

POST具有以下结构:

$.post(target, post_data, function(response) { }); 

GET有以下几点:

$.get(target, post_data, function(response) { }); 

LOAD有以下几点:

$(*selector*).load(target, post_data, function(response) { }); 

正如你所看到的,有小的差异在他们之间,因为它的情况临时t决定使用哪一个。需要将信息发送到内部文件?使用.post(这将是大多数情况下)。需要以这种方式发送信息,以便您可以提供指向特定时刻的链接?使用.get。它们都允许回调,您可以在其中处理文件的响应。

一个重要的注意事项是.load以两种不同的方式行事。如果你只提供目标文件的url,它将作为作为get(和我说的行为,因为我使用默认的.load行为测试了在被调用的PHP中检查$_POST,它检测到$_POST,而不是$_GET;也许它会更准确地说,它充当.post而没有任何争论);然而,正如http://api.jquery.com/load/所说,一旦你为函数提供了一个参数数组,它就会将这些信息发布到文件中。无论是什么情况,.load函数都会直接将信息插入到DOM元素中,这在很多情况下都非常清晰且非常直接;但如果你想在响应中做更多的事情,仍然会提供一个回调。此外,.load允许您从文件中提取某个代码块,从而使您可以将目录(例如,保存在html文件中)以及直接将其片段(条目)检索到DOM元素中。

0

大家都很好地解释了这个话题。还有一点我想添加about.load()方法。

根据Load document如果您在数据url中添加了后缀选择器,那么它将不会在加载内容时执行脚本。

Working Plunker

  $(document).ready(function(){ 
       $("#secondPage").load("mySecondHtmlPage.html #content"); 
      }) 

在另一方面,在网址中删除选择后,在新的内容脚本运行。尝试this example

在URL中的index.html文件

  $(document).ready(function(){ 
       $("#secondPage").load("mySecondHtmlPage.html"); 
      }) 

删除#内容后有在讨论其他方法没有提供这样的内置功能。

-1

两者都用于发送一些数据并使用该数据接收一些响应。

GET:获取存储在服务器中的信息。 (即搜索,推特,人物信息)。如果你想发送信息,然后使用process.php?name=subroto获取请求发送请求,所以它基本上通过url发送信息。网址无法处理超过2036个字符。所以对于博客文章你能记得它不可能吗?

POST:发布与GET完全相同的东西。用户注册,用户登录,大数据发送,博客文章。 如果您需要发送安全信息,然后使用发布或大数据,因为它不通过网址。

AJAX$.get()$.post()包含是$.ajax()子集功能。它有更多的配置。

$.get()方法,这是一种简写为$.ajax()。当使用$.get()时,不是传入一个对象,而是传入参数。至少需要前两个参数,它们是要检索的文件的URL(例如,test.txt)以及成功回调。