$(“#id”)。load和$ .ajax之间的区别?

时间:2010-01-16 08:04:38

标签: javascript jquery

有谁知道$("#id").load$.ajax之间有什么区别?

6 个答案:

答案 0 :(得分:80)

让我为你澄清一些事情:

$.ajax()是jQuery提供的基本和低级别的ajax函数,这意味着你可以做任何你想要的事情,你可以使用XmlHttpRequest对象。但曾几何时,jQuery Developers认为除了$.ajax()之外,他们可以为开发人员提供更具体的方法,这样他们就不需要传递更多参数来使$.ajax()方法按照他们想要的方式工作。例如,他们说不是将json作为参数传递给$.ajax()来表示返回数据类型,而是提供$.getJSON()所以我们都知道我们期望的返回类型是{{1} ,或者不是将发送方法指示为jsonpost,而是分别使用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-typedatatype

这两个对于发出JSON请求或XML请求很重要。 ASP.NET更缺乏内容类型字段(至少在使用[WebMethod]时)并且只返回页面的HTML而不是JSON。

$.load()旨在简单地返回直接HTML。 $.ajax也会给你

  • 缓存
  • 错误处理
  • 过滤数据
  • 密码

加上其他人。

答案 3 :(得分:3)

来自文档......

$(selector).load(..)

  

从远程文件加载HTML并将其注入DOM。

$.ajax(...)

  

使用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失败和“无论什么”的情况。你没有加载它。希望我对此是正确的。