Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Получение ответа сервера после загрузки файла (https://javascript.ru/forum/jquery/32618-poluchenie-otveta-servera-posle-zagruzki-fajjla.html)

Oleg_Antonov 23.10.2012 15:17

Получение ответа сервера после загрузки файла
 
Всем привет.
В ходе выполнения функции вызываю функцию загрузки файла на сервер (плагин AxajFileUploader). Сервер присылает ответ. Не получается этот ответ передать в первую функцию. Сейча примерно так:
function f1(){
ajaxFileUpload(var1, var2);

var ajaxresultdata = $('input#ajaxresult').val();
}

function ajaxFileUpload(var1, var2)
{
   $.ajaxFileUpload({
		url:'signfileupload.php',
		secureuri:false,
		fileElementId:var1,
		type: 'POST',
		dataType: 'json',
		data:{thumbrint: var2, fileelementname: var1},
		success: function (data, status)
			{
			if(typeof(data.error) != 'undefined')
			{
			if(data.error != '')
			{
			alert(data.error);
			$('input#ajaxresult').val('false');
			}else{
			$('input#ajaxresult').val(data.msg);
			}
			}
			},
		error: function (data, status, e)
		        {
		        alert(e);
		        $('input#ajaxresult').val('false');
		        }
		        }
		)
return;
}

Переменная ajaxresultdata остается пустой. Результать добавляется в input только после выполнения функции f1 полностью. Как получить ответ от сервера в переменную f1?

Hoshinokoe 23.10.2012 20:38

Oleg_Antonov,

Процесс загрузки файла на сервер асинхронный, данные ответа от сервера будут доступны только в success - колбэке. Поэтому в success вы должны вызвать ваш метод и передать данные.

Примерно так:
function f1(){
ajaxFileUpload(var1, var2);
	 
//остальной код функции переносите в отдельную функцию
}

function onDataLoaded(data)
{
//здесь остальной код
}

function ajaxFileUpload(var1, var2)
{
   $.ajaxFileUpload({
   ...
   success: function (data, status)
   {
      ...
      onDataLoaded(data);
      ...
   }


Часовой пояс GMT +3, время: 09:54.