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

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

让我稍微澄清一点:

$.ajax()是jQuery提供的基本和低级ajax函数,这意味着你可以做任何你想要的工作,你可以使用XmlHttpRequest对象。 但是从前jQuery开发人员认为,除了$.ajax()之外,他们可以为开发人员提供更具体的方法,所以他们不需要传递更多的参数来使$.ajax()方法按照他们想要的方式工作。 例如,他们说,不是将json作为parameter passing给$.ajax()来指示返回数据types, $.getJSON()提供$.getJSON()所以我们都知道我们期望的返回types是json ,或者不是指示send方法作为postget ,您可以分别使用$.post()$.get()

所以load()是一样的东西,它可以帮助你注入html数据到你的html。 与load()方法你知道一个HTML部分是预期的。

这不是很酷吗?

我想我已经坠入爱河了。

欲了解更多信息,你可以访问jquery.com,他们甚至提供了他们的新的图书馆和API教程页面。

编辑:

  $.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调用,你需要传递send方法types的一些信息,如第一个例子所示,而不是这样做,你可以使用$.post()因为你知道你在做什么是post所以这个版本更简单,易于工作。

但是不要忘记一些东西。 除了load() ,所有其他的ajax方法都会返回XHR(XmlHttpRequest实例),所以你可以像使用XmlHttpRequest一样处理它们,实际上你正在使用它,而load()返回jQuery,这意味着:

 $("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] } ); 

在上面的例子中,您可以轻松地将返回html注入到#objectID元素中。 不是很酷吗? 如果没有返回jQuery,你应该一直使用callback函数,你可能从类似的data对象中得到结果,并手动注入到你想要的html元素。 所以它会很麻烦,但是使用$.load()方法,这在jQuery中是非常简单的。

 $("#feeds").load("feeds.php", {limit: 25}, function(){ alert("The last 25 entries in the feed have been loaded"); }); 

你甚至可以发布参数,所以根据这些参数,你可以在服务器端做一些工作,并发送HTML部分回到客户端,你可爱的jQuery代码将它接受并注入到#feeds html元素在上面的例子中。

load()启动一个Ajax请求来检索返回的HTML被设置为给定的select器。

所有的jQuery Ajax函数都是简单的$.ajax()包装器,所以:

 $("#id").load(...); 

大概相当于:

 $.ajax({ url: "...", dataType: "html", success: function(data) { $("#id").html(data); } }); 

一个更简洁的总结和最重要的区别是$.ajax允许你设置content-typedatatype

这两个对于发出JSON请求或XML请求很重要。 对于缺less内容types的字段,ASP.NET更加繁琐(至less在使用[WebMethod] ),只会返回页面的HTML而不是JSON。

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

  • 高速caching
  • error handling
  • 过滤数据
  • 密码

加上其他人。

从文档…

$(selector).load(..)

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

$.ajax(...)

使用HTTP请求加载远程页面。 这是jQuery的低级AJAX实现。

load是专门用于获取(通过GET,除非提供参数,然后POST)一个HTML页面,并直接插入到选定的节点(由$(selector) $(selector).load(...)

$.ajax(...)是一种更为通用的方法,可以让您发出GET和POST请求,并且不做任何具体的响应。

我鼓励你阅读文档。

这里是load函数的源代码: http : //github.com/jquery/jquery/blob/master/src/ajax.js#L15

正如你所看到的,这是一个$ajax处理一些选项。 换句话说,一个方便的方法。

鉴于使用延期和承诺对象,上述答案可能不再有效。 我相信用.ajax你可以使用.when,但是你不能用.load来做。 总之,我相信.ajax比.load更强大。 例如:

  some_promise = $.ajax({....}); .when(some_promise).done(function(){.... }); 

您可以更好地控制html加载。 也有失败和“无论是什么”的情况。 你没有得到这个负载。 希望我对此是正确的。