$.ajax()
、$.get()
和 $.load()
有什么区别?
在什么情况下使用哪一个更好?
$.ajax()
是最灵活可配置的 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/
这些方法提供了不同的抽象层次。
$.ajax()
提供了对Ajax请求的完全控制。如果其他方法不能满足您的需求,请使用它。
$.get()
执行一个Ajax GET
请求,返回的数据(可以是任何数据)将被传递给您的回调处理程序。
$(selector).load()
将执行一个Ajax GET
请求,并设置所选返回数据的内容(应该是文本或HTML)。
根据具体情况选择方法。如果你只需要做简单的事情,则没有必要使用$.ajax()
。
例如,如果返回的数据是需要进一步处理的JSON格式,您将不会使用$.load()
。在这种情况下,您将使用$.ajax()
或$.get()
。
非常基本但是
$.load()
: 将一段html加载到一个容器的DOM中。$.get()
: 如果你想进行GET请求,并且需要对响应进行详细处理,可以使用该函数。$.post()
: 如果你想进行POST请求,但是不需要将响应加载到某个容器的DOM中,可以使用该函数。$.ajax()
: 如果你需要在XHR失败时执行某些操作或者需要动态指定ajax选项(例如cache: true),可以使用该函数。http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
描述: 执行异步HTTP(Ajax)请求。
全能型函数,可进行任何类型的Ajax请求。
http://api.jquery.com/jQuery.get/
jQuery.get()
描述: 使用HTTP GET请求从服务器加载数据。
只允许进行HTTP GET请求,需要较少的配置。
.load()
描述: 从服务器加载数据并将返回的HTML放入匹配的元素中。
专门用于获取数据并将其注入到元素中。
重要提示: jQuery.load() 方法不仅可以执行 GET 请求,还可以执行 POST 请求,只要提供了 data 参数(详见:http://api.jquery.com/load/)
data 类型:PlainObject 或 String 一个普通对象或字符串,将被发送到服务器端。
请求方法 如果提供了 data 参数,则使用 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()
给你最大的控制权。你可以指定是否要POST数据,有更多的回调等。
.load
, .get
和 .post
是使用函数 .ajax
的不同方式。$.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,它将像个获取(我这么说是因为我测试了在使用默认.load行为时检查$_POST
在被调用的PHP中是否会检测到$_POST
,而不是$_GET
;也许更精确的说法是它充当没有任何参数的.post); 然而,正如http://api.jquery.com/load/所说,一旦您向函数提供一个参数数组,它将向文件POST信息。无论如何,.load函数都会直接将信息插入到DOM元素中,在许多情况下非常易读、直接;但仍提供回调以便您想要对响应做更多操作。此外,.load允许您从文件中提取某个代码块,使您可以将目录保存在html文件中,并直接将其中的片段(项目)检索到DOM元素中。
大家都很好地解释了这个主题。我想再补充一点关于.load()方法的内容。
根据加载文档,如果在数据url中添加后缀选择器,则不会执行加载内容中的脚本。
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
其他讨论方法中没有提供这样的内置功能。
两者都用于发送一些数据并使用该数据接收一些响应。
GET: 获取存储在服务器中的信息。(即搜索、推文、个人信息)。如果您想要发送信息,则可以使用process.php?name=subroto
发送请求,因此它基本上通过url发送信息。Url不能处理超过2036个字符。所以对于博客文章来说,你能记得它是不可能的吗?
POST: POST和GET做相同的事情。用户注册、用户登录、大数据发送、博客文章。如果需要发送安全信息,则使用post或用于大数据,因为它不通过url传递。
AJAX: $.get()
和$.post()
包含$.ajax()
的子集功能。它具有更多的配置。
$.get ()
方法是$.ajax()
的一种简写。当使用$.get ()
时,您需要传入参数而不是传入对象。至少,您需要前两个参数,它们是要检索的文件的URL(例如test.txt)和一个成功回调函数。