我想使用$ .ajax()来请求页面,但只加载该页面的片段。我知道你可以使用.load()指定你想要的页面片段但是我想知道这是否可以使用$ .ajax?
答案 0 :(得分:34)
对于那些想知道的人,stoplion指的是这个功能:Loading Page Fragments(向下滚动页面):
与$ .get()不同,.load()方法允许我们指定要插入的远程文档的一部分。这是通过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()文档中的Script Execution。
答案 1 :(得分:2)
你可以通过post获取你的片段,将html附加到一个div:display:none;然后使用选择器获取所需的片段,并将其附加到您希望显示的区域。
空气代码:
<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);
})
});
答案 2 :(得分:1)
正确答案是:
$.ajax({
url: 'http://example.com/page.html',
data: {},
success: function (data) {
$("#el").html($(data).append(data).find("#selector"));
},
dataType: 'html'
});
答案 3 :(得分:-2)
使用加载方法的简单解决方案:
$("#menu a").click(function(){
event.preventDefault();
$("#container").load(this.href + " #container p");
return false;
});
仅对更复杂的脚本使用Ajax方法,例如发布或从PHP脚本或JSON文件获取,否则会降低您的网站速度。