$(“#id”)。load和$ .ajax之间的区别?
有谁知道$("#id").load
和$.ajax
之间的区别是什么?
让我稍微澄清一点:
$.ajax()
是jQuery提供的基本和低级ajax函数,这意味着你可以做任何你想要的工作,你可以使用XmlHttpRequest
对象。 但是从前jQuery开发人员认为,除了$.ajax()
之外,他们可以为开发人员提供更具体的方法,所以他们不需要传递更多的参数来使$.ajax()
方法按照他们想要的方式工作。 例如,他们说,不是将json
作为parameter passing给$.ajax()
来指示返回数据types, $.getJSON()
提供$.getJSON()
所以我们都知道我们期望的返回types是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 ); } });
与以下相同:
$.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-type
和datatype
。
这两个对于发出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加载。 也有失败和“无论是什么”的情况。 你没有得到这个负载。 希望我对此是正确的。