【问题标题】:Get content of paginated pages via ajax, filter it and append it to current page通过ajax获取分页页面的内容,过滤并附加到当前页面
【发布时间】:2014-08-27 18:07:32
【问题描述】:

我想在我的博客上加载更多功能。我现在有分页页面,这不是我想要的。我认为通过 ajax 获取这些分页页面的内容,过滤并附加到 div 会很容易。

我不确定这是否是要走的路。这是我尝试过的:

$("a.next").on("click", function(e){
    e.preventDefault();
    var nextLink = $(this).attr("href");
    console.log(nextLink);

    $.ajax ({
      url: "http://localhost:8888/" + nextLink,
      datatype: 'html',
      type: "GET",
      success: function(data) {
        var response = data;
        $(".blogItems .holder").append(response);

      },
      error: function(xhr, status, error) {
        var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
      }
    });
  });

你们能指出我正确的方向吗?

【问题讨论】:

  • 您在使用博客模块吗?如果有,是哪一个?另外,nextLink 的值是多少?如果您还没有,您将需要一个仅呈现您需要的模板部分的 ajax 端点。
  • 是的,我正在使用博客模块。 silverstripe 博客模块。 NextLink 具有 silverstripe 模块附带的分页的价值,并指向下一页。我真的不明白你对端点的意思是什么?你能解释一下吗?
  • 端点是指您请求的 URL。例如,这可能是对控制器的操作。我建议为处理 ajax 请求的博客持有者控制器添加一个扩展。您可以在此处了解有关操作的更多信息:doc.silverstripe.org/framework/en/topics/controller 这是另一个最近的示例:stackoverflow.com/questions/24570107/…

标签: javascript jquery ajax silverstripe


【解决方案1】:

如果您在后端检测到 ajax 调用,而不是整个页面,只返回您感兴趣的部分(为此使用 Director::is_ajax() 和按照@micmania 评论中的提示进行操作)。如果你不想让你的控制器更复杂并且你不介意发送额外的数据,你也可以只检索整个页面(就像你现在所做的那样),然后只选择你想要附加到你的现有文件:

$.ajax ({
  url: "http://localhost:8888/" + nextLink,
  datatype: 'html',
  type: "GET",
  success: function(data) {
    var response= $("#theDivIWant", data); //<- Here (untested, but should do the trick
    $(".blogItems .holder").append(response);
  },
  error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    alert(err.Message);
  }
});

对于不使用 javascript 的人来说,这个解决方案也能很好地降级,尽管我现在不确定这是否有任何附加价值 :-)

【讨论】:

  • 这是一个解决方案,我测试了上面的代码并且它有效。我也会尝试实现其他建议的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多