我想使用$.ajax()请求一个页面,但是只加载该页面的一部分。 我知道你可以使用.load()指定要加载哪些页面部分,但我想知道是否能用$.ajax()实现这个功能?
如果你正在想知道,stoplion指的是这个功能:加载页面片段(在该页面下滑):
.load() 方法与 $.get() 不同,它允许我们指定要插入的远程文档的一部分。这是使用 url 参数的特殊语法实现的。如果字符串中包含一个或多个空格字符,则假定跟随第一个空格的部分是 jQuery 选择器,用于确定要加载的内容。
由于 $.get() 看起来不支持它,我假设 $.ajax 也不支持它。实现这个功能的简单方法如下:
$.ajax({
url: 'http://example.com/page.html',
data: {},
success: function (data) {
$("#el").html($(data).find("#selector"));
},
dataType: 'html'
});
这相当于
$("#el").load('http://example.com/page.html #selector');
需要注意的是,特殊语法('#selector')意味着加载的HTML中存在的脚本不会被执行。请参见.load()文档中的“脚本执行”部分。
#selector
在顶层,.ajax()
将无法工作。 - Derek 朕會功夫div
中,然后在其中搜索选择器。 - Jordan Reiter<div id="tempRegion" style="display:none;">
</div>
$.ajax({
url: "page.htm",
type: "GET",
success: function(results){
$('#tempRegion').html(results);
...
// Now select fragment, append to display area
var fragement = $('#someFragment').html();
$('#displayRegion').html(fragement);
})
});
$.ajax({
url: 'http://example.com/page.html',
data: {},
success: function (data) {
$("#el").html($(data).append(data).find("#selector"));
},
dataType: 'html'
});
使用load方法的简单解决方案:
$("#menu a").click(function(){
event.preventDefault();
$("#container").load(this.href + " #container p");
return false;
});
只有在处理更复杂的脚本时,例如从PHP脚本或JSON文件发布或获取时,才使用Ajax方法,否则它会减缓您的网站速度。
.load()
工作,并且显然需要使用.ajax()
来完成,否则他就不会提出这个问题。你的回答没有解决问题,而且你的链接也是垃圾邮件,因为它们与手头的主题无关。 - Andrew Barber