Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.04.2010, 16:22
Аспирант
Отправить личное сообщение для master_alf Посмотреть профиль Найти все сообщения от master_alf
 
Регистрация: 08.04.2010
Сообщений: 34

JSON. Как в callback функции изменить свойство объекта?
<?php
echo '{
"foo": "SomeString"
}';
?>


myObj = new Object();
myObj.foo = "test";
var foo;
$.getJSON("php/json.php", "", function(json){
	 myObj.foo = json.foo;
	 foo = json.foo;
});
alert(myObj.foo);
alert(foo);
}

Не могу понять как можно изменить свойство myObj.foo через getJSON?
в переменной foo после получения данных содержится SomeString, а в myObj.foo - test
Ответить с цитированием
  #2 (permalink)  
Старый 22.04.2010, 16:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

myObj = new  Object();
myObj.foo = "test";
var foo;
$.getJSON("php/json.php", "", function(json){
     myObj.foo = json.foo;
     foo = json.foo;
     alert(myObj.foo);
     alert(foo);
});
}
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2010, 16:30
Аспирант
Отправить личное сообщение для master_alf Посмотреть профиль Найти все сообщения от master_alf
 
Регистрация: 08.04.2010
Сообщений: 34

Не, это конечно работает. Но вопрос был не как получить алертом нужные значения, а как изменить в функции свойство объекта. Алерты я поставил, что бы отслеживать прошли ли изменения. Сами же свойства мною будут использоваться дальше. Так что, к сожалению, это решение не подходит.
Но, блин, порадовало.
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2010, 16:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Запрос-то асинхронный. Код выполняется не дожидаясь, когда ответ придёт.
Ответить с цитированием
  #5 (permalink)  
Старый 22.04.2010, 17:00
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

master_alf
Как подсказка, измените:
sleep(10);
echo '{
"foo": "SomeString"
}';

будет снова выдавать foo - "SomeString" ?
Ответить с цитированием
  #6 (permalink)  
Старый 22.04.2010, 17:00
Аспирант
Отправить личное сообщение для master_alf Посмотреть профиль Найти все сообщения от master_alf
 
Регистрация: 08.04.2010
Сообщений: 34

Как так? Данная функция обрабатывается когда приходит ответ от сервера.
Если вы про код ниже функции, то чем тогда объяснить то, что в переменной foo содержится правильное значение, полученное от сервера. А вот свойство объекта почему-то не изменяется. Скорее всего это как-то связано с областью видимости, но не могу ничего путнего нарыть.
Ответить с цитированием
  #7 (permalink)  
Старый 22.04.2010, 17:02
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

читать выше
Ответить с цитированием
  #8 (permalink)  
Старый 22.04.2010, 17:03
Аспирант
Отправить личное сообщение для master_alf Посмотреть профиль Найти все сообщения от master_alf
 
Регистрация: 08.04.2010
Сообщений: 34

Сообщение от micscr
master_alf
Как подсказка, измените:
показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки
1 sleep(10);
2 echo '{
3 "foo": "SomeString"
4 }';

будет снова выдавать foo - "SomeString" ?
Нет, в данном случае получается undefined.
Но это не отменяет вопроса. Как мне сделать так, что бы по получению ответа от сервера, свойство объекта изменялось? Мне нужно работать с объектами не только внутри коллбэк функции.
Сообщение от micscr
читать выше
Когда нажал ответить - этого поста еще не было. Потому и не проверил сразу.
Ответить с цитированием
  #9 (permalink)  
Старый 22.04.2010, 17:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от master_alf
чем тогда объяснить то, что в переменной foo содержится правильное значение, полученное от сервера.
Пока вы в первом alert на OK нажимаете, ответ от сервера уже пришёл.
Ответить с цитированием
  #10 (permalink)  
Старый 22.04.2010, 17:04
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от master_alf
Как мне сделать так, что бы по получению ответа от сервера, свойство объекта изменялось?
Оно меняется. Но проверяете вы его до того, как оно изменилось.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
Как в событие объекта передать свойство метода DVVID Events/DOM/Window 8 22.02.2010 12:30
Объект как свойство объекта Cooskon Общие вопросы Javascript 6 16.02.2010 21:41
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Статья о JavaScript Plest Оффтопик 17 12.11.2009 12:24