Как получить URL для страницы AJAX? - PullRequest
0 голосов
/ 07 сентября 2010

Я довольно новичок в 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 ]

1 голос
/ 09 сентября 2010

В начале страницы загрузите ajax на основе хеш-части URL-адреса страницы # id,

$(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 , но я не тестировалэто.

0 голосов
/ 08 сентября 2010

Я не знаю, что именно вы пытаетесь сделать. Но если у вас нет модуля, который создает данные JSON, вам нужно сделать это самостоятельно.

Вам необходимо создать обратный вызов меню с hook_menu. В функции обратного вызова вы можете вернуть данные json, используя drupal_json.

Если вы создадите обратный вызов меню и т. Д. Самостоятельно, URL будет таким, каким вы его сделаете. В противном случае вам просто нужно использовать URL, определенный модулем, который вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...