$("#id").load和$ .ajax之间的区别?

Erx*_*der 37 javascript jquery

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

Tar*_*rik 81

让我为你澄清一些事情:

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

与以下相同:

$.post("some.php", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });
Run Code Online (Sandbox Code Playgroud)

现在您可以看到它是简化版本$.ajax(),要进行post调用,您需要传递一些send方法类型的信息,post如第一个示例所示,但是您可以使用它,$.post()因为您知道自己在做什么是post这样的版本更简化,易于使用.

但不要忘记一些事情.除此之外load(),所有其他ajax方法都返回XHR(XmlHttpRequest实例),因此您可以像处理XmlHttpRequest一样对待它们,实际上您正在使用它,但是load()返回jQuery意味着:

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

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

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

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

  • 一个优秀而简洁的解释,SO需要更多这样的东西. (6认同)
  • 谢谢伙伴,这是一个完美的描述.所以.getJSON和.post以及.get都是ajax调用吗?太好了! (2认同)
  • @damiien:我同意你的意见,亚伦,你应该保持一个博客:) (2认同)

cle*_*tus 19

load() 启动Ajax请求以检索HTML,返回时将其设置为给定的选择器.

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

$("#id").load(...);
Run Code Online (Sandbox Code Playgroud)

可能相当于:

$.ajax({
  url: "...",
  dataType: "html",
  success: function(data) {
    $("#id").html(data);
  }
});
Run Code Online (Sandbox Code Playgroud)