如何获取ajax页面的URL?

时间:2010-09-07 19:57:10

标签: php javascript jquery ajax drupal

我对ajax很新,我成功地将它应用到了Drupal网站。但我想知道,我如何获得一个页面的URL,其中部分内容通过ajax加载。这甚至可能吗?单击时会检索JSON对象,那么在检索某个URL时如何使其工作? 我意识到这是一个非常广泛的问题,任何帮助将不胜感激。 提前谢谢!

我的JS看起来像这样:

  Drupal.behaviors.ajax_pages = function (context) {
  $('a.categoryLink:not(.categoryLink-processed)', context).click(function () {
    var updateProducts = function(data) {
      // The data parameter is a JSON object. The films property is the list of films items that was returned from the server response to the ajax request.
      if (data.films != undefined) {
        $('.region-sidebar-second .section').hide().html(data.films).fadeIn();
      }
      if (data.more != undefined) {
        $('#content .section').hide().html(data.more).fadeIn();
      }

    }
    $.ajax({
      type: 'POST',
      url: this.href, // Which url should be handle the ajax request. This is the url defined in the <a> html tag
      success: updateProducts, // The js function that will be called upon success request
      dataType: 'json', //define the type of data that is going to get back from the server
      data: 'js=1' //Pass a key/value pair
    });
    return false;  // return false so the navigation stops here and not continue to the page in the link
}).addClass('categoryLink-processed');
}

2 个答案:

答案 0 :(得分:1)

在页面的开头根据url页面#id,

的哈希部分加载ajax
$(document).ready(function() {
  $.ajax({
     type: 'POST',
     url: "/path/to/page",
     success: updateProducts,
     dataType: 'json',
     data: 'id=' + window.location.replace(/.*#/, '')
  });

  $('a.categoryLink:not(.categoryLink-processed)', context).click(function () {

    $.ajax({
      type: 'POST',
      url: "/path/to/page",
      success: updateProducts,
      dataType: 'json',
      data: 'id=' + this.href.replace(/.*#/, '')
    });
});

或者你可以使用jquery-history,但我没有测试它。

答案 1 :(得分:0)

我不知道你到底要做什么。但除非你有一个创建JSON数据的模块,否则你需要自己动手。

您需要使用hook_menu创建菜单回调。在回调函数中,您可以使用drupal_json返回json数据。

如果您自己创建菜单回调等,则URL将是您创建的任何内容。否则,您只需使用您要使用的模块定义的URL。