[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передать значение из функции к функции
Kusss
Есть два файла js
в первом
function maket_save(type){
$.post('/m_form/',{'save':data}, function(save){
if (type == 'download')
window.location.href=save;
else
return
save;
});
}


во втором
html2canvas($('#save_block')[0],{ 
onrendered: function(canvas){
document.body.appendChild(canvas);
alert( maket_save('save') );
}
}
);

Файл сохраняет, если в 1 файле поставить alert - все выводит правильно. Подскажите что не так ?
Kusss
Помогите решить проблему.
Не работает это
alert( maket_save('save') ); 
sergeiss
Цитата (Kusss @ 2.09.2014 - 10:27)
Помогите решить проблему.
Не работает это
alert( maket_save('save') );

А почему ты решил, что оно должно работать? smile.gif Ты не совсем понимаешь, как работает JS.

Тут смотри, что получается. Ты вызвал функцию maket_save(). Она сделала ПОСТ-запрос и назначила функцию-обработчик. И делается выход из функции.

Далее (позднее по времени) приходит ответ от сервера. Который ты возвращаешь через "return(save);". Вот только куда ему возвращаться-то? Это ж возврат из безымянной функции-обработчика запроса ПОСТ, а не из market_save().

Если ты хочешь убедиться, что что-то пришло, либо обработать это, то делай эту обработку в безымянной функции, в том месте, где сейчас написано "return(save);" А функцию maket_save() вызывай "просто так", без алерта.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Kusss
Я действительно очень мало знаю js.
Цитата
то делай эту обработку в безымянной функции

Эээээ .... и что там должно быть, и как из безымянной функции "принять" данные переменной ?
sergeiss
Цитата (Kusss @ 2.09.2014 - 12:50)
Эээээ .... и что там должно быть, и как из безымянной функции "принять" данные переменной ?

Не совсем понял вопрос. Отвечу, как понял :)

Во смотри. У тебя было так (каменты я написал):
function maket_save(type){
// идет вызов ПОСТ, хорошо, пусть идет
$.post('/m_form/',{'save':data}, function(save){
// сюда ты попадешь только тогда, когда будет обработан асинхронный вызов; к тому времени JS давно выйде из функции maket_save()
if (type == 'download')
window.location.href=save;
else // return save сработает, но никто не примет этот возврат значения
return save;
});
}

Твою функцию надо изменить немного:
function maket_save(type){
$.post('/m_form/',{'save':data}, function(save){
if (type == 'download')
window.location.href=save;
else {
// тут надо сделать какой-то обработчик значения; например, вызов некой функции, выполняющей определенные действия, и принимающей переменную save
//return save;

process_save_data( save ); // пусть она будет так называться
}
}
);
}

Функция process_save_data() будет вызвана в нужное время и с правильным параметром.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

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