这是一个简单的疑问:
当我们使用$('#content').load( "page.php #content");
之类的内容时,它会在服务器端加载整个page.php
""然后提取#content
元素或只加载指定的元素?
除此之外,这个$('#content').load( "page.php #content");
是否与此相同:
$.ajax({
url:"page.php",
type:'GET',
error: function(){
alert("Oops!"); // Em caso de o AJAX dar erro (opcional)
},
success:
function(data){
$('#content').html($(data).find('#content').html());
}
});
说到"从服务器获取的方法"?
答案 0 :(得分:2)
是的,那些将是相同的,XMLHttpRequest无法加载部分页面
jQuery拆分url和给定的选择器,然后根据url加载整个页面,然后使用find()
将基于传入选择器的给定元素作为过滤器提取。
这是jQuery' load()
的缩短版(略有修改版),只是为了展示它是如何运作的
function(url, params, callback) {
var selector, div, html, self = this;
// if the url param contains a space, get the selector to use as filter
if ( url.indexOf(" ") > -1 ) {
selector = jQuery.trim(url.slice( url.indexOf(" ") ));
url = url.slice(0, url.indexOf(" "));
}
// make regular ajax call
jQuery.ajax({
url : url,
type : "GET",
dataType : "html",
data : params
}).done(function(responseText) {
div = jQuery('<div>');
html = jQuery.parseHTML(responseText);
self.html( div.append( html ).find(selector) );
});
return this;
}