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

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

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

$.ajax()是最可configuration的一个,在这里你可以很好地控制HTTP标头等等。 您也可以使用此方法直接访问XHR对象。 还提供了更细粒度的error handling。 因此,可以更复杂,往往是不必要的,但有时非常有用。 你必须用callback自己处理返回的数据。

$.get()只是$.ajax()的缩写,但会将一些configuration抽象出来,为它隐藏的内容设置合理的默认值。 将数据返回给callback。 它只允许GET请求,所以附带$.post()函数用于类似的抽象,仅用于POST

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

应该注意的是,所有的$.get()$.post() .load()都只是$.ajax()包装,因为它在内部被调用。

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

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

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

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

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

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

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

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

jQuery.ajax()

说明:执行asynchronousHTTP(Ajax)请求。

完整的monty,让你做任何types的Ajax请求。


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

jQuery.get()

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

只允许您发出HTTP GET请求,需要less一点configuration。


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

.load()

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

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

非常基本但是

  • $.load() :将一段HTML加载到一个容器DOM中。
  • $.get() :如果您想进行GET调用并广泛播放响应,请使用此方法。
  • $.post() :如果你想进行一个POST调用,并且不想将响应加载到某个容器DOM,请使用它。
  • $.ajax() :如果您在XHR失败时需要做某些事情,或者您需要dynamic指定一个Ajax选项(例如,cache:true),请使用此选项。

每个人都是对的。 函数.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。 他们都允许一个callback,你可以处理文件的响应。

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

重要说明:如果提供了数据参数, jQuery.load()方法不仅可以执行GET操作 ,还可以执行POST请求(请参阅: http //api.jquery.com/load/

数据types:PlainObject或String与请求一起发送到服务器的普通对象或string。

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

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

$.load()是一个辅助函数,只能在元素上调用。

$.ajax()给你最大的控制。 你可以指定是否要发布数据,获得更多的callback等

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

按照加载文档,如果您在数据url中添加了后缀select器,那么它将不会在加载内容时执行脚本。

工作Plunker

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

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

删除index.html文件中的URL中的#content后

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

讨论中没有其他方法提供的内置function。

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

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

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

AJAX$.get()$.post()包含$.ajax()子集的特性。 它有更多的configuration。

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