/ / не може перервати функцію jquery, коли є пост ajax - jquery, ajax

не можу зламати функцію jquery при наявності ajax post - jquery, ajax

var id = $("input#user_id").val();

if (id != "") {
$.post("function.php?act=check_id", { id: id }, function(data) {
if (data == "error") {
return false;
}
});
//some other codes going on here....

Як ви бачите, я намагаюся порушити функцію до даних, що надходять з аякс-посту, але це продовжує дію інших кодів. я маю на увазі return false не ламає це.

де я помиляюся?

Дякую

Відповіді:

1 для відповіді № 1

Це асинхронний дзвінок, тому він не зможе працювати якВи цього задумали - помилка перевірки та повернення буде запущена, коли дані повернуться з сервера, але решта коду все одно буде працювати. Спробуйте спробувати jQuery.ajax з async = false, якщо ви хочете дочекатися результату, або введіть інший код всередині функції, заданої для публікації.

$.post("function.php?act=check_id", { id: id }, function(data) {
if (data != "error") {
// some other code
}
});

2 для відповіді № 2

Код внизу повинен містити всередині $.post() функція, яка виконується при поверненні. Код після виклику AJAX виконується до його повернення.

AJAX = Асинхронний JavaScript і XML


1 для відповіді № 3

Ви "робите асинхронний дзвінок AJAX. Код, який ви намагаєтеся запобігти за допомогою return false; виконується задовго до того, як відповідь повернеться.

Будь-який код, виконання якого (або його відсутність) залежить від відповіді виклику AJAX, повинен бути розміщений всередині зворотний дзвінок (або розміщений у функції, яка виконується зворотним викликом).


1 для відповіді № 4

Здається, ви хочете, щоб були дзвінки AJAXсинхронний, що може бути зроблено, але залишення типового налаштування асинхронного, мабуть, найкраще, і обробка коду, коли виклик ajax закінчується методами зворотного виклику (тобто завершено, успіх, обробники помилок). В основному, якщо ви робите виклик AJAX синхронним, ви не будете знати, скільки часу триватиме запит, який заблокує браузер, поки запит не повернеться. Це може бути дуже небажано для великих запитів AJAX.

Деякі посилання на виклики jQuery AJAX

http://api.jquery.com/jQuery.ajax/

Як змусити AJAX працювати синхронно для всіх викликів AJAX

$.ajaxSetup({async:false});

Як змусити AJAX працювати синхронно для одного виклику AJAX

$.ajax({
async: false,
type: "POST",
url: url,
data: data,
success: success
dataType: dataType
});