有谁知道$("#id").load
和$.ajax
之间有什么区别?
答案 0 :(得分:80)
让我为你澄清一些事情:
$.ajax()
是jQuery提供的基本和低级别的ajax函数,这意味着你可以做任何你想要的事情,你可以使用XmlHttpRequest
对象。但曾几何时,jQuery Developers认为除了$.ajax()
之外,他们可以为开发人员提供更具体的方法,这样他们就不需要传递更多参数来使$.ajax()
方法按照他们想要的方式工作。例如,他们说不是将json
作为参数传递给$.ajax()
来表示返回数据类型,而是提供$.getJSON()
所以我们都知道我们期望的返回类型是{{1} ,或者不是将发送方法指示为json
或post
,而是分别使用get
或$.post()
。
所以$.get()
是一回事,它可以帮助你将html数据注入你的html。使用load()
方法,您知道正在预期html部分。
不是很酷吗?
我想我已经爱上了。
有关更多信息,您可以访问jquery.com,他们甚至提供新的库和api教程页面。
修改:
load()
与以下相同:
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
现在您可以看到它是$.post("some.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
的简化版本,要进行帖子调用,您需要传递一些发送方法类型的信息,即$.ajax()
,如第一个示例所示,这样做你可以使用post
,因为你知道你在做什么$.post()
所以这个版本更加简化,易于使用。
但不要忘记一些事情。除了post
之外,所有其他ajax方法都返回XHR(XmlHttpRequest实例),因此您可以将它们视为使用XmlHttpRequest,实际上您正在使用它,但是load()
返回jQuery,意思是:
load()
在上面的示例中,您可以轻松地将返回html注入$("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] } );
元素。不是很酷吗?如果它没有返回jQuery,你应该使用回调函数,你可能从类似#objectID
对象中得到结果并将其手动注入你想要的html元素。所以这很麻烦但是使用data
方法,它在jQuery中真的很简单。
$.load()
你甚至可以发布参数,所以根据这些参数你可以在服务器端做一些工作并将html部分发送回客户端,你可爱的jQuery代码接受它并将其注入到$("#feeds").load("feeds.php", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});
html元素中上面的例子。
答案 1 :(得分:18)
load()
启动一个Ajax请求来检索HTML,当返回时,它被设置为给定的选择器。
所有jQuery Ajax functions只是$.ajax()
的包装器所以:
$("#id").load(...);
可能相当于:
$.ajax({
url: "...",
dataType: "html",
success: function(data) {
$("#id").html(data);
}
});
答案 2 :(得分:4)
更简洁的摘要,最重要的区别是$.ajax
允许您设置content-type
和datatype
。
这两个对于发出JSON请求或XML请求很重要。 ASP.NET更缺乏内容类型字段(至少在使用[WebMethod]
时)并且只返回页面的HTML而不是JSON。
$.load()
旨在简单地返回直接HTML。 $.ajax
也会给你
加上其他人。
答案 3 :(得分:3)
来自文档......
从远程文件加载HTML并将其注入DOM。
使用HTTP请求加载远程页面。这是jQuery的低级AJAX实现。
load
专门用于获取(通过GET,除非提供参数,然后使用POST)HTML页面并直接将其插入选定的节点(由$(selector)
$(selector).load(...)
部分选择的节点1}}。
$.ajax(...)
是一种更通用的方法,允许您发出GET和POST请求,并且不会对响应做任何特定的处理。
我鼓励您阅读文档。
答案 4 :(得分:1)
以下是load
函数的源代码:http://github.com/jquery/jquery/blob/master/src/ajax.js#L15
正如您所看到的,它是$ajax
,有一些选项处理。换句话说,一种方便的方法。
答案 5 :(得分:0)
鉴于使用延迟和承诺对象,上述答案可能不再有效。我相信使用.ajax你可以使用。但是你不能使用.load。简而言之,我相信.ajax比.load更强大。例如:
some_promise = $.ajax({....});
.when(some_promise).done(function(){.... });
您可以更精细地控制html加载。还有.fail和.always失败和“无论什么”的情况。你没有加载它。希望我对此是正确的。