2012-02-13 2 views
2

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

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

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

ответ

3

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

$("#item").click(function (ev) { 
    var self = this; 
    $.post(link_to_something, function() { 
     window.location.href = self.href; 
    }); 
    return false; 
}); 
+0

спасибо. Это прекрасно работает. – Red

0

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

$("#item").click(function (e) { 
    e.preventDefault(); 
    $.post(link_to_something, function() { 
     window.location = $(this).attr('href'); 
    }); 
}); 
Смежные вопросы