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


Answers:


244

$.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/


3
@UzairAli不,它确实接受传递给它的变量,并使用它们执行jQuery.ajax()
lisburnite 2016年

1
不错,.load()只是纯HTML,而.get()对于更多事情很有用。
路易吉·洛佩兹

30

这些方法提供了不同的抽象层。

  • $.ajax()使您可以完全控制Ajax请求。如果其他方法不能满足您的需求,则应使用它。

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

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

这取决于您应使用哪种方法的情况。如果您想做简单的事情,则无需理会$.ajax()

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


10

http://api.jquery.com/jQuery.ajax/

jQuery.ajax()

描述:执行异步HTTP(Ajax)请求。

全额费用,使您可以提出任何种类的Ajax请求。


http://api.jquery.com/jQuery.get/

jQuery.get()

说明:使用HTTP GET请求从服务器加载数据。

只允许您发出HTTP GET请求,所需的配置要少一些。


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

.load()

说明:从服务器加载数据并将返回的HTML放入匹配的元素。

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


8

很基础但是

  • $.load():将一段html加载到容器DOM中。
  • $.get():如果您要拨打GET并广泛使用响应,请使用此选项。
  • $.post():如果您要进行POST调用并且不想将响应加载到某个容器DOM,请使用此方法。
  • $.ajax():如果XHR失败时需要执行某些操作,或者需要动态指定ajax选项(例如,cache:true),请使用此选项。

5

重要说明: 如果提供了data参数,则jQuery.load()方法不仅可以执行GET请求,还可以执行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" ] } );

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,它会起到一个GET(我说的行动,因为我测试检查$_POST中被称为PHP在使用默认.load行为和检测$_POST,而不是$_GET;也许这将是更精确说它充当.post而没有任何参数);但是,如http://api.jquery.com/load/说,一旦为函数提供了参数数组,它将把信息发布到文件中。无论如何,.load函数都会将信息直接插入到DOM元素中,在许多情况下,该元素非常清晰,直接。但是如果您想对响应做更多的事情,它仍然提供回调。此外,.load允许您从文件中提取特定的代码块,从而使您可以将目录保存在例如html文件中,并直接将其部分(项目)检索到DOM元素中。



1

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

GET:获取存储在服务器中的信息。(即搜索,鸣叫,人员信息)。如果要发送信息,则使用来获取请求发送请求。process.php?name=subroto因此,它基本上是通过url发送信息。网址最多只能处理2036个字符。因此,对于博客帖子,您还记得这是不可能的吗?

POSTPOST与GET执行相同的操作。用户注册,用户登录,大数据发送,博客文章。如果您需要发送安全信息,请使用post或大数据,因为它们不会通过url。

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

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


0

每个人都很好地解释了这个话题。我想补充一点关于.load()方法。

根据加载文档, 如果您在数据url中添加后缀选择器,则它将不执行加载内容中的脚本。

工作柱塞

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

另一方面,删除url中的选择器后,将运行新内容中的脚本。试试这个例子

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

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

讨论中其他方法没有提供这种内置功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.