Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2014, 22:12
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

callback $.get()
Из php-скрипта (cms Drupal), я добавляю JS-скрипт к странице, который должен записать информацию в сессию при собитии клика по ссылкам (.view-id-collections a). При клике запускается функция get(), где по ссылке срабатывает другой php-скрипт, в котором происходит запись в сессии. Затем я получаю вывод в консоль: "paging api View link has been clicked: session saved". Сам переход не происходит, так я для отладки поставил return false; Информация записана в сессию, всё нормально.

(function ($) {
  // Add logic to Drupal.behaviors - so it gets triggered even after AJAX page update
  Drupal.behaviors.pagingApiSaveActiveView = {
    attach: function (context, settings) {
       $(".view-id-collections a").once("pagingapi", function(){
        $(this).click(function() {
          // store view name in session?
          var s_url = "/paging_api_save_active_state_id/ajax/collection01";
          $.get( s_url, function( data ) {
            console.log("paging api View link has been clicked: session saved");
          });
          return false;
        });
      });
    }
  };
})(jQuery);


Но проблема в том, что если я убираю return false;, то сессия пуста, хотя я получаю в консоле "paging api View link has been clicked: session saved". Вероятно сессия не успевает записаться, до срабатывания ссылки.

Как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2014, 22:31
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Faab Посмотреть сообщение
Как быть?
Да будет так:
$(this).click(function(e) {
    e.preventDefault();
    .....
});
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2014, 22:42
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Ну теперь перехода по ссылке нет. Переход я запрещал, для отладки скрипта. Даже если после get() я поставлю редирект, то мне же всё равно нужен колбэк?

$(this).click(function(e) {
          e.preventDefault();
          // store view name in session?
          var s_url = "/paging_api_save_active_state_id/ajax/collection01";
          $.get( s_url, function( data ) {
            console.log("paging api View link has been clicked: session saved");
          });

          // window.location.replace("http://site.ru");
        });
Ответить с цитированием
  #4 (permalink)  
Старый 21.09.2014, 01:00
Профессор
Отправить личное сообщение для Faab Посмотреть профиль Найти все сообщения от Faab
 
Регистрация: 16.04.2012
Сообщений: 310

Я не понимаю, почему у меня выдаёт ошибку, если я делаю так:
$(this).click(function(e) {
          e.preventDefault();
          // store view name in session?
          var s_url = "/paging_api_save_active_state_id/ajax/collection04";
          $.get(s_url)
            .done(function() {
              console.log( "Data Saving");
              // window.location.replace("http://site.ru");
            });
        });


Uncaught TypeError: undefined is not a function
В документации вроде так написано:
http://api.jquery.com/jquery.get/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с textarea Rompo Events/DOM/Window 14 16.12.2013 17:41
callback для анонимной функции gh321 jQuery 2 18.11.2013 13:20
Callback работает не так как я от него жду singaporian Общие вопросы Javascript 3 14.08.2013 00:42
В callback функции теряется контекст. Как это обойти? xintrea AJAX и COMET 4 02.06.2013 11:40
Callback функция и глобальные переменные drunia85 Events/DOM/Window 5 14.10.2012 03:06