Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JavaScript глобальные переменные (https://javascript.ru/forum/jquery/13971-javascript-globalnye-peremennye.html)

anset 22.12.2010 14:41

JavaScript глобальные переменные
 
Есть скрипт на jquery, который отправляет запрос на север, а в data возращается число:
$.post("indexl.php", { option: "com_user", task: "chek"},
function (data){
id = data;
}
);
alert(id);

Алерт за пределами функции уже не видит эту переменную, как её получить за пределами функции?

DooMer 22.12.2010 15:09

var id = null;
$.post("indexl.php", { option: "com_user", task: "chek"},
function (data){
id = data;
}
);
alert(id);

Kolyaj 22.12.2010 15:33

alert выполняется до того, как пришёл ответ с сервера.

DooMer 22.12.2010 16:08

Kolyaj,
ой, действительно тупанул, это ж аякс запрос )

anset 22.12.2010 16:46

подскажите тогда, как все-таки можно вытащить переменную id или какую-то альтернативу данному коду.

Snipe 22.12.2010 16:50

Цитата:

Сообщение от anset (Сообщение 84780)
подскажите тогда, как все-таки можно вытащить переменную id или какую-то альтернативу данному коду.

На ваш вопрос ответили вторым комментарием.
До вызова аякса в глобальной видимости создайте переменную.

anset 22.12.2010 17:00

Цитата:

Сообщение от Snipe (Сообщение 84782)
На ваш вопрос ответили вторым комментарием.
До вызова аякса в глобальной видимости создайте переменную.

А можно, пожалуйста, конкретней и с примером.
Если вы говорите о ниже приведенном коде, то здесь alert выдаст null:
var id = null;
$.post("indexl.php", { option: "com_user", task: "chek"},
function (data){
id = data;
}
);
alert(id);

B@rmaley.e><e 22.12.2010 17:31

Потому что на момент вызова ответ на запрос еще не получен. После получения запроса значение id будет таким, какой ответ пришел от сервера.


Часовой пояс GMT +3, время: 12:14.