Как вынести переменную за объект 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, время: 12:39. |