2010-05-11 3 views
1

У меня проблемы с моим JQuery Ajax Call. Ответ всегда равен нулю, поскольку функция обратного вызова выполняется до завершения запроса get_friends. Есть что-то, чего я не хватает? Заранее спасибо.JQuery get/ajax call выполняет обратный вызов без ожидания ответа

jQuery(document).ready(function($) { 
    $('#btn_update').click(function() { 

     url = '/get_friends/'; 
     $.get(url, {}, function(response){ 
      alert(response); 
     }); 
    }); 
}); 

ответ

1

Мой коллега был в состоянии помочь мне. Мне пришлось добавить «return false»; в конце функции щелчка.

+1

Ах ... это была кнопка * отправить *. –

+0

Лучше использовать следующее вместо 'return false;' в обработчике событий: Добавьте аргумент к своей функции, предпочтительно названный * e * (для * события *). Затем вызовите 'e.preventDefault();' прямо в начале вашей функции. Это имеет преимущество предотвращения действия по умолчанию (регулярное представление формы и т. Д.), Даже если что-то в вашем коде идет не так и заставляет обработчик возвращаться раньше. – ThiefMaster

0

Я ничего не вижу, чтобы объяснить поведение. Фактически, я скопировал и вставил этот код и просто изменил URL-адрес и получил ожидаемый результат (он дождался завершения вызова, прежде чем показывать ответ от вызова). Так что нет, вы ничего не пропустили в этом коде, проблема должна быть в другом месте.

OT (возможно): Вы объявляете url как переменную в области, содержащей этот код? Потому что в противном случае вы создаете implicit global variable, который является Bad Thing (tm). :-) Но это не объяснило бы поведение, которое вы описываете.

0

Вы могли бы указать последний параметр $ .get. Это может быть значение dataType для $ .ajax. Попробуйте «текст» и посмотрите, что вы действительно получаете от сервера. Затем вы можете перейти к типу, который вам действительно нужен (см. http://api.jquery.com/jQuery.ajax/)

Смежные вопросы