jQuery: Как загрузить гиперссылки как обратный вызов $ .get? - PullRequest
2 голосов
/ 23 марта 2009

Как я могу отложить загрузку якорной ссылки до тех пор, пока не исчезнет запрос $ .get? У меня

$("a.track").click(function() {
    $.get("track.php", { id: "page1.html" });
});

... но нажатие на ссылку загружает новую страницу до выполнения вышеуказанного запроса (мой ответ на странице PHP не записывается). Если я остановлю ссылку с помощью return false;, запрос $ .get будет работать как положено, но теперь ссылка не загружается.

Я бы хотел сделать что-то вроде

$.get("track.php", { id: "page1.html" }, function() {
    return true;
});

... но новая страница загружается до того, как это может быть выполнено, поэтому она не работает должным образом.

Как я могу сделать так, чтобы загрузка этой ссылки происходила только после отправки запроса GET? Меня не волнует возвращение результата из запроса, я просто хочу, чтобы он был отправлен до загрузки новой страницы.

Ответы [ 2 ]

6 голосов
/ 23 марта 2009

Вы можете передать обработчику клика обратный вызов, который перенаправит страницу в случае успеха.

$("a.track").click(function(event) {
  event.preventDefault(); // Ignore user's click
  var href = $(this).attr('href');
  $.get("track.php", { id: "page1.html" }, function(data){
    window.location = href; // Redirect on success
  });
});
0 голосов
/ 23 марта 2009
$("a.track").click(function() {
    var that = this;
    $.get("track.php", { id: "page1.html" }, function(){
        $(that).attr('onclick', '').click();
    });
});

или что-то в этом роде. Вам придется убить, что вы раньше обрабатывали события клика. Attr ('onclick', '') может или не может сделать это.

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