[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: область видимости переменных и jquery
dadli
област видимости перемененних и jquery

здравствуите

через jquery получаю некаторие данние из .json фаила

var x1;
$.getJSON("mydata.json").success ( function (myJson) {
x1 = myJson["Positions"][1]["x"];
alert(x1);
}
);


так работает, но переменная x1 не видно вне $.getJSON-а, то есть так виведит "undefined"

var x1;
$.getJSON("mydata.json").success ( function (myJson) {
x1 = myJson["Positions"][1]["x"];
}
);
alert(x1);



вопрос: как сделать переменная х1 глобалним ?



Спустя 3 минуты, 42 секунды (9.05.2012 - 22:58) sharki написал(а):
dadli
О, как я зае*ся с этой проблемой, единственное что на ум пришло, это сделать callback функцию и т.д...

Если есть альтернативы, поведайте и мне, пожалуйста smile.gif

Спустя 14 минут, 19 секунд (9.05.2012 - 23:13) Oyeme написал(а):
you can set global variables using window.variablename
window.test =  777;

Спустя 1 минута, 37 секунд (9.05.2012 - 23:14) sharki написал(а):
Oyeme
А ты пробовал так?) Я вроде пробовал, давно было, не получалось

Спустя 8 минут, 36 секунд (9.05.2012 - 23:23) dadli написал(а):
оо.. сеичас стал известно что област видимости тут не причём, перемення глобалная, просто я виведил её пока сервер дал ответ, то есть х1 не определенная при моменте, когда виведил её.

Спустя 1 минута, 8 секунд (9.05.2012 - 23:24) sharki написал(а):
dadli Так получилось как сказал Oyeme ? Если да, покажи код)

Если получилось, то я нуб..

Спустя 36 секунд (9.05.2012 - 23:24) Oyeme написал(а):
Таким образом мы определаям пространство. wink.gif Глобальные переменныйзло,но если нет другово выхода, то можно.
В firebug загляните в свойстов DOM->window
Global variables

window - These variables can be used anywhere in your script at any time.
window.variable syntax.

Спустя 40 секунд (9.05.2012 - 23:25) Игорь_Vasinsky написал(а):
jq или js - разницы то нет... я глобальные объявляю чтоб не мудохаться с аргументами.

Спустя 19 минут, 49 секунд (9.05.2012 - 23:45) dadli написал(а):
sharki

Oyeme сказал так обявить переменню глoбалним да ? но перемення уже глобалная, вот так видно что он глобалная:


$.getJSON("mydata.json").success ( function (myJson) {
x1 = myJson["Positions"][1]["x"];
}
);

i_id = setInterval (
function () {
if (x1 != undefined) {
alert(x1);
clearInterval(i_id);
}
}
,100
);


так виведит резултат, но ето не решит проблему, пока что я придумал, вся код надо вставить внутри $.getJSON-а и так не будит проблеми, но может есть лучшие решении ?

Спустя 49 секунд (9.05.2012 - 23:46) killer8080 написал(а):
Цитата (sharki @ 9.05.2012 - 22:24)
dadli Так получилось как сказал Oyeme ?

У него проблема была не в области видимости, он же уже сам ответил на свой вопрос. smile.gif
Любая глобальная переменная в JS является свойством объекта WINDOW, любая переменная объявленная без ключевого слова var является глобальной.

Спустя 7 часов, 9 минут, 17 секунд (10.05.2012 - 06:55) sharki написал(а):
А ну да, логично же, эт я туплю...ведь JS асинхронен..

Надо сделать calback функцию

function go(fnc){
$.getJSON("mydata.json").success ( function (myJson) {
var x1 = myJson["Positions"][1]["x"];
if(fnc){
fnc(x1);
}
}
);
}


Ну или, если получится (надо тестировать)

function go(x){
alert(x);
}

$.getJSON("mydata.json").success ( function (myJson) {
var x1 = myJson["Positions"][1]["x"];
fnc(x1);
});



Спустя 3 часа, 5 минут, 20 секунд (10.05.2012 - 10:00) Zerstoren написал(а):
Тут прикол в другом.
Асинхронность AJAX.

Тоже как-то столкнулся. Пришлось решить с помощью синхронного запроса.
Браузер подвисал на пару мс, но в целом пользователю не заметно было.

По этому либо выполняйте действие в callback`e, либо делайте синхронный запрос.

Вот такая бида JS и AJAX

Спустя 2 часа, 1 минута, 39 секунд (10.05.2012 - 12:02) Гость_Michael написал(а):
Цитата (Zerstoren)
Пришлось решить с помощью синхронного запроса

FFFFFFFFUUUUUUUUUUU...

Спустя 1 час, 14 минут, 4 секунды (10.05.2012 - 13:16) killer8080 написал(а):
Цитата (Zerstoren @ 10.05.2012 - 09:00)
Тоже как-то столкнулся. Пришлось решить с помощью синхронного запроса.
Браузер подвисал на пару мс, но в целом пользователю не заметно было.

Если у юзера узкий канал, или исчерпано max connection сервера, задержка будет весьма заметной, при этом остальные скрипты то же тормознут. Такие вещи нужно избегать.


_____________


когда чарли чаплин принимал участие в конкурсе: "клон чарли чаплинов", то чарли занимал третю позицию.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.