обновите ссылку href после отправки запроса ajax - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть ссылка в настройках приложения rails, чтобы сделать запрос ajax

= link_to "link text", some_url, :remote => true

У меня также есть обработчик кликов jquery, который будет изменять URL при нажатии

$('a').click(function() { 
  // change url to "other_url" 
});

Проблема в том, что ссылка изменяется ДО того, как мой ajax-запрос будет отправлен. Поэтому при первом нажатии вместо перехода к «some_url», как должно, вместо этого происходит переход к «other_url».

Есть ли простой / легкий способ исправить это? В настоящее время у меня есть ajax:complete, привязанный к ссылке, поэтому, как только ответ ajax вернется, он обновит ссылку. Но это не работает, например, если пользователь нажимает на ссылку несколько раз быстро, поскольку запрос еще не возвращен (таким образом, ссылка еще не обновлена).

1 Ответ

0 голосов
/ 17 февраля 2012

Я бы использовал обратный вызов ajax:beforeSend, чтобы отключить щелчок во время выполнения запроса AJAX. Затем измените URL-адрес на новое значение в обратном вызове ajax:complete.

В обработчике кликов

$('a').click(function(){
  if($(this).attr("disabled") == "disabled"){
    return false;
  }
});

В обратном вызове ajax:beforeSend что-то вроде ....

$('a').removeAttr('data-remote');
$('a').attr("disabled","disabled");

А затем в ajax:complete обратном вызове что-то вроде

// Change the URL...
$('a').removeAttr('disabled');
$('a').attr('data-remote','true');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...