JQuery: выполнить публикацию до перехода по ссылке - PullRequest
2 голосов
/ 13 февраля 2012

Мне нужно сделать асинхронную запись на сервер, когда кто-то на моем сайте нажимает на ссылку.Я попробовал приведенный ниже код, но, похоже, он не выполняет задачу на сервере, который я хочу.Я думаю, проблема в том, что он переходит по ссылке, прежде чем что-то может произойти.На самом деле мне не нужно ждать ответа от сервера, мне просто нужно отправить вызов на него.Может кто-нибудь мне помочь?Может быть, как отложить переход по ссылке, прежде чем она будет вызвана, или я должен отметить, используя $ .post?

$("#item").click(function (ev) {
    $.post(link_to_something);
});

<a id="item" href="www.google.com">Link</a>

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Первым делом нужно отменить действие ссылки по умолчанию, вернув false из обработчика click.Это даст достаточно времени для выполнения запроса AJAX.И когда он завершится, в обратном вызове успеха вы сможете перенаправить туда, куда указывает ссылка:

$("#item").click(function (ev) {
    var self = this;
    $.post(link_to_something, function() {
        window.location.href = self.href;
    });
    return false;
});
0 голосов
/ 13 февраля 2012

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

$("#item").click(function (e) {
    e.preventDefault();
    $.post(link_to_something, function() {
        window.location = $(this).attr('href');
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...