使用Jquery AJAX加载页面片段

时间:2010-03-08 00:06:31

标签: jquery ajax

我想使用$ .ajax()来请求页面,但只加载该页面的片段。我知道你可以使用.load()指定你想要的页面片段但是我想知道这是否可以使用$ .ajax?

4 个答案:

答案 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文件获取,否则会降低您的网站速度。