Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   callback $.get() (https://javascript.ru/forum/misc/50305-callback-%24-get.html)

Faab 20.09.2014 22:12

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". Вероятно сессия не успевает записаться, до срабатывания ссылки.

Как быть?

Rise 20.09.2014 22:31

Цитата:

Сообщение от Faab (Сообщение 331553)
Как быть?

Да будет так:
$(this).click(function(e) {
    e.preventDefault();
    .....
});

Faab 20.09.2014 22:42

Ну теперь перехода по ссылке нет. Переход я запрещал, для отладки скрипта. Даже если после 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");
        });

Faab 21.09.2014 01:00

Я не понимаю, почему у меня выдаёт ошибку, если я делаю так:
$(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/


Часовой пояс GMT +3, время: 21:14.