$ .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()
执行一个AjaxGET
请求。 返回的数据(可以是任何数据)将被传递给您的callback处理程序。 -
$(selector).load()
将执行一个AjaxGET
请求,并将设置所选返回数据(应该是文本或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。
.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。