$ .ajax()和$ .get()以及$ .load()之间的区别

时间:2010-10-06 06:54:55

标签: jquery ajax

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

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

9 个答案:

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


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

  

.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,如果在数据网址中添加后缀选择器,则在加载内容时不会执行脚本。

Working Plunker

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

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

删除index.html文件中的url中的#content

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

讨论中没有其他方法提供的内置功能。<​​/ p>