Как вынести переменную за объект javascript
function gethtml(p){ link = String(p).substr(strrpos(String(p), '/' ), strlen(String(p))); $.ajax({ url: link, success: function(data){ window.html = hand(data,'<bo' + 'dy class=center>','</bo' + 'dy>'); }; }); return html; }; Вопрос таков: "Как вынести переменную html из объекта?" |
Я, конечно извиняюсь, но из какого объекта?
|
lixa4,
Никак(поскольку асинхронное получение) - просто запускайте из аякса функцию обработчик function setHTML(html){ //Тут Ваши дествия } function gethtml(p){ link = String(p).substr(strrpos(String(p), '/' ), strlen(String(p))); $.ajax({ url: link, success: function(data){ window.html = hand(data,'<bo' + 'dy class=center>','</bo' + 'dy>'); }; }); setHTML(html); }; |
Он не видит переменную и не инициализирует её не при каких обстоятельствах за функцией внутри объекта ajax..
моя цель - возвратить эту переменную из основной функции "getHTML". |
Это просто напросто невозможно.
когда ты получишь переменную html, функция success ещё несработает, и значение установить твоей переменной неуспеет. это асинхронное программирование, незабывай. вариант решения function gethtml(p,callback){ link = String(p).substr(strrpos(String(p), '/' ), strlen(String(p))); $.ajax({ url: link, success: function(data){ callback ( hand(data,'<bo' + 'dy class=center>','</bo' + 'dy>') ); }; }); setHTML(html); }; //используем gethtml("бла бла",function(data){ alert (data); }) ещё это можно было бы решить функциональным стилем, но это слишком для этого примера, да и сложнее порядка на два. Сначало с асинхронным разберись. |
возможно, всё возможно. Установив таймаут на 100 миллисекунд можно получить переменную внутри таймаута, однако как вынести её оттуда я тоже незнаю.
function gethtml(p){ setTimeout('var a = html; alert(a);', 100); // В этом случае у нас всё выводит, но вынести переменную за таймаут мне не удалось =( link = String(p).substr(strrpos(String(p), '/' ), strlen(String(p))); $.ajax({ url: link, success: function(data){ window.html = hand(data,'<bo' + 'dy class=center>','</bo' + 'dy>'); } }); }; |
lixa4,
Блин ну вынесешь ты её - но те все одно нужно запустить ункцию и передать текущее полученные данные. Смысл в споре? - Обрамить обработку результата в функцию и поставить вызов в Аяксе Если оно сначала использется на странице - сделать вызов обработки результата до аякса в теле страницы |
Часовой пояс GMT +3, время: 10:50. |