Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.05.2013, 11:29
Новичок на форуме
Отправить личное сообщение для Yuriel Посмотреть профиль Найти все сообщения от Yuriel
 
Регистрация: 07.10.2010
Сообщений: 4

Асинхронное обновление переменных javascript!
Проблемка вот в чем:
Например, есть страница содержащая Какой то DIV:
<div id = 'myDiv'> </div>
после асинхронного запроса в нем появляются какие то данные и клиентский код:
<div id = 'myDiv'>
<script>
var XXX = '12345';
</script>
...Всякая всячина...
</div>
И есть функция, работающая с переменной XXX.
Так вот, появляется ошибка - 'XXX' - определение отсутствует. То, есть эта функция не видит переменную.
Я подозреваю, что после асинхронного запроса надо как-то обновить область переменных javascript, но не знаю как это сделать. Может есть способ заставить браузер асинхронно заново просмотреть обновленный <div id = 'mydiv'> ????
P.S. при щелчке правой кнопкой на странице - "Просмотр кода элемента" (браузер Chrome), раскрывается код страницы, где исправно видно:
<div id = 'myDiv'>
<script>
var XXX = '12345';
</script>
...Всякая всячина...
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 12.05.2013, 11:58
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

а как Вы обновляете данные в div?
Скорее всего нужно вырезать скрипт и выполнять с помощью eval

Последний раз редактировалось vadim5june, 12.05.2013 в 12:27.
Ответить с цитированием
  #3 (permalink)  
Старый 12.05.2013, 12:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Скрипты, вставленные через innerHTML , не выполняются.
Можно выполнить такой код при обновлении дива:
('#myDiv script').remove().appendTo('#myDiv')

При вставке скриптов через DOM-операции, скрипты выполнятся.
Ответить с цитированием
  #4 (permalink)  
Старый 12.05.2013, 21:05
Новичок на форуме
Отправить личное сообщение для Yuriel Посмотреть профиль Найти все сообщения от Yuriel
 
Регистрация: 07.10.2010
Сообщений: 4

Можно выполнить такой код при обновлении дива:
('#myDiv script').remove().appendTo('#myDiv')


Про innerText спасибо, просветили. Но вот где выполнять код обновления DIV-a. Как страница с дивом узнает про InnerText? Можно конечно и setInterval-м обновить, но... ИМХО коряво как - то.
Просто я использую готовые сторонние PHP скрипты для работы с базой. После того как решил использовать асинхронный запрос - начались проблемы. Все отображается, но с jav-ой грабли.
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2013, 07:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Yuriel
Как страница с дивом узнает про InnerText? Можно конечно и setInterval-м обновить, но
innerText тут не причем. Код выполнять надо после завершения асинхронного запроса, то есть в функции-обработчике ответа на запрос, в той, которая обновляет див.
setInterval не вариант вовсе.
Ответить с цитированием
  #6 (permalink)  
Старый 13.05.2013, 19:52
Новичок на форуме
Отправить личное сообщение для Yuriel Посмотреть профиль Найти все сообщения от Yuriel
 
Регистрация: 07.10.2010
Сообщений: 4

Сообщение от danik.js Посмотреть сообщение
innerText тут не причем. Код выполнять надо после завершения асинхронного запроса
setInterval не вариант вовсе.
Простите, я может чего то не понимаю, но как я узнаю, что АСИНХРОННЫЙ запрос выполнен!? Может тогда уж СИНХРОННЫМ сделать запрос, а только после этого обновить div?
Ответить с цитированием
  #7 (permalink)  
Старый 13.05.2013, 21:34
Новичок на форуме
Отправить личное сообщение для Yuriel Посмотреть профиль Найти все сообщения от Yuriel
 
Регистрация: 07.10.2010
Сообщений: 4

Сообщение от vadim5june
Скорее всего нужно вырезать скрипт и выполнять с помощью eval
Честно говоря с функцией eval() познакомился только сегодня. Если подскажете где ее вставить, буду благодарен.
В общем упрощу до минимума задачу. Если кто поможет - респект и огромное СПАСИБО

Есть например страничка :
...
<div id = "myDiv">

</div> 

<div onclick = "alert(XXX)"></div>
...


После Асинхронного запроса (...document.getElementById('myDiv').innerHTML = ...) получается вот что:

...
<div id = "myDiv">
   ...
      <script>
          var XXX = 'Ну когда же все это заработает наконец';
      </script>
   ...
</div> 

<div onclick = "alert(XXX)"></div>
...


Ну, и как говорит капитан очевидность, при нажатии на нижний <div> хотелось бы увидеть alert. Но мы его не видим, так как код вставлен innerHTML. Если можно тыкните меня носом где нужно поставить eval() или использовать обновление: ('#myDiv script').remove().appendTo('#myDiv')
P.S. Заморачиваюсь так, потому-что асинхронно запрашиваю сторонние скрипты, вытягивающие из базы пути к картинкам, привязанные к определенным объектам. В основном скрипте - фотогалерея: объект - картинки.
Ответить с цитированием
  #8 (permalink)  
Старый 13.05.2013, 21:57
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Yuriel
Простите, я может чего то не понимаю, но как я узнаю, что АСИНХРОННЫЙ запрос выполнен!? Может тогда уж СИНХРОННЫМ сделать запрос, а только после этого обновить div?
наверное слушая событие "пришел ответ". как это сделать описано в любой статье или доке, как по нативному так и по любой библиотеке
И как говорит капитан очевидность -эту информацию за сутки можно было сотни раз найти
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение переменных в коде javascript Temar Общие вопросы Javascript 2 18.08.2012 09:37
Значение переменных из JavaScript в PHP pr43unknown Общие вопросы Javascript 3 18.01.2012 18:37
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Получение в JavaScript значений переменных, посланных методом POST Ratibor Redoran Общие вопросы Javascript 5 08.06.2010 16:36