Немного обо всем интересном
На главную Обратная связь Поиск
Главная
Форум
 
 
 
Если вы только начали изучать строительство сайтов, и у вас возникают различные вопросы по HTML, CSS или PHP – Вы можете их задавать на нашем форуме.
С радостью постараемся вам помочь.
  Статьи Файлы Видео Кулинарные рецепты Города и Страны Разное  
Отдых и развлечения Юмор Видео, ТВ и музыка Непознанное Литература Спорт Игры Хобби
Окружающий мир Люди Страны и города География Флора и фауна Космос
Технологии Hardware Операционные системы Софт Интернет Мобильные устройства Сети и сетевая безопасность Разное
Дизайн и программирование Веб-строительство Дизайн и графика

Все статьи Список статей Добавить статью
 
Вниз
AJAX FILE UPLOAD


 
Ответить в эту тему    Открыть новую тему    Опции темы
lexa
Аватар не загружен
сообщение 31.7.2007 20:16
Сообщение #1

Код
function LoadAjax()
{
    AJAX = new Object();
    
    AJAX.onload  = null;
    AJAX.onerror = null;
    
    AJAX.GET  = new Array();
    AJAX.POST = new Array();
    
    AJAX.text = null;
    AJAX.xml  = null;
    
    AJAX.errtext = null;
    
    AJAX.TIMEOUT = null;
    
    if(window.XMLHttpRequest) {
      AJAX.HTTP = new XMLHttpRequest();
    } else if(window.ActiveXObject) {
      AJAX.HTTP = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    
    AJAX.HTTP.onreadystatechange = function() {
      if(AJAX.HTTP.readyState == 4) {
        clearTimeout(AJAX.TIMEOUT);
        AJAX.TIMEOUT = null;
        if(AJAX.HTTP.status == 200) {
          AJAX.text = AJAX.HTTP.responseText;
          AJAX.xml = AJAX.HTTP.responseXML;
          if(AJAX.onload !== null) AJAX.onload();
        } else {
          AJAX.errtext = AJAX.HTTP.statusText;
          if(AJAX.onerror !== null) AJAX.onerror();
        }
      }
    }
    
    
    AJAX.setGET = function(vname, value) {
      AJAX.GET[vname] = value;
      AJAX.GET.length ++;
    }
    
    AJAX.setPOST = function(vname, value) {
      AJAX.POST[vname] = value;
      AJAX.POST.length ++;
    }
    
    AJAX.request = function(file) {
      var v;
      var post;
      AJAX.HTTP.abort();
      var url = file;
      if(AJAX.GET.length !== 0) {
        url += "?";
        for(v in AJAX.GET) {
          url += v + "=" + encodeURIComponent(AJAX.GET[v]) + "&";
        }
      }
      if(AJAX.POST.length === 0) {
        AJAX.HTTP.open("GET", url, true);
        post = null;
      } else {
        AJAX.HTTP.open("POST", url, true);
        post = "";
        for(v in AJAX.POST) {
          post += v + "=" + encodeURIComponent(AJAX.POST[v]) + "&";
        }
        AJAX.HTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        AJAX.HTTP.setRequestHeader("Content-Length", post.length);
      }
      
      AJAX.HTTP.send(post);
      AJAX.GET  = new Array();
      AJAX.POST = new Array();
      AJAX.GET.length = 0;
      AJAX.POST.length = 0;
      AJAX.TIMEOUT = setTimeout("AJAX.etimeout();", 300000);
    }
    
    AJAX.etimeout = function() {
      AJAX.HTTP.abort();
      AJAX.errtext = "Timeout";
      if(AJAX.onerror !== null) AJAX.onerror();
    }
    
    AJAX.onload = function() {
    document.getElementById('UserInformation').innerHTML = AJAX.text
    }
    
    AJAX.onerror = function() {
        alert(AJAX.errtext);
    }
        
    AJAX.PreLoadMsg = function(FieldName, ImageSrc)
    {
         if(AJAX.HTTP.readyState<4)
           {
            document.getElementById(FieldName).innerHTML = "<img src='" + ImageSrc + "'> Loading...";
         }
    }
}

function GetWindows()
{
    LoadAjax();
    AJAX.setGET('mod', 'advises');
    AJAX.PreLoadMsg('UserInformation', 'ajax-loader.gif');
    AJAX.request("vardump.php");
        
}


Прочитал у Вас на сайте статью про AJAX. Но получается так что мне нужно делать несколько ajax запросов на одной странице. Поэтому основной код я поместил в ф-ию LoadAjax();

Вопрос 1:
Может это не совсем правильный подход? Я с Javascript плохо знаком и может так как я сделал - засунул объект в отдельную ф-ию и теперь ее везде вызываю работать будет не всегда и не везде?

Вопрос 2:
Что нужно дописать к этому ajax framework, чтобы можно было грузить еще файлы на сайт. Чтобы можно было вызвать ф-ию, к примеру AJAX.setFile(параметры) и массив $_FILE ушел в PHP скрипт. Желательно чтобы код был максимально просто для понимания, поскольку, повторяю, я не очень силен в javascript.

Большое Вам спасибо!!! ae.gif
 
Ответить | Цитировать+
[SL]

Радиоактивный
Иконка группы
Бессмертный
83
Сообщений
сообщение 31.7.2007 21:10
Сообщение #2

К сожалению AJAX не дает возможности загружать файлы на сервер.
Но выход есть.
В начале страницы (сразу после тега <body> ) нужно вставить следующий код:
Код
<script language="javascript"><!--
function loader_end() {
//Этот код будет выполняться после полной отправки данных
alert("Файл загружен!");
}
//-->
</script>
<div style="display:none;">
<iframe name="loader" onload="loader_end()"></iframe></div>

форма для отправки файла должна выглядеть так:
Код
<form action="путь/к/пхп/скрипту" method="post" target="loader">
<input type="file" name="myfile" /><input type="submit" value="Отправить файл" />
</form>
 
Ответить | Цитировать+
lexa
Аватар не загружен
сообщение 31.7.2007 21:32
Сообщение #3

вставил после тега <body> код:

Код
<div style="display:none;">
<iframe name="loader" onload="loader_end()"></iframe></div>


так вот, как я и ожидал до запуска, ф-ия loader_end() запустилась сразу при загрузки страницы! потому что элемент onload отвечает за запуск ф-ий при загрузки данной конструкции хтмл кода.

вопрос как быть? be.gif
 
Ответить | Цитировать+
[SL]

Радиоактивный
Иконка группы
Бессмертный
83
Сообщений
сообщение 31.7.2007 21:36
Сообщение #4

Извените, как то сразу об этом не вспомнил au.gif
исправте яваскрипт функцию:
Код
<script language="javascript"><!--
loader_flag = 0;
function loader_end() {
if(!loader_flag) {
  loader_flag = 1;
  return;
}
//Этот код будет выполняться после полной отправки данных
alert("Файл загружен!");
}
//-->
</script>
 
Ответить | Цитировать+
lexa
Аватар не загружен
сообщение 31.7.2007 22:09
Сообщение #5

Я попробывал. Но вот что плохо, сообщение о загрузке появляется (вроде, я еще не точно уверен) СРАЗУ после нажатия кнопки SUBMIT :( А вдруг произойдет ошибка, что тогда?

Еще вопрос: результат выполнения пхп скрипта должен вернуться в iframe?
 
Ответить | Цитировать+
[SL]

Радиоактивный
Иконка группы
Бессмертный
83
Сообщений
сообщение 31.7.2007 22:11
Сообщение #6

ответ вернется в iframe
на случай ошибки я и придусмотрел функцию loader_end
там вы можете обработать результат запроса
 
Ответить | Цитировать+
lexa
Аватар не загружен
сообщение 31.7.2007 22:35
Сообщение #7

форум просто супер!
дмитрий, спасибо за оперативный ответ! :)

буга-га ag.gif
 
Ответить | Цитировать+
W_Wolf

Волк
Иконка группы
<<Тёмная гильдия>>
205
Сообщений
сообщение 01.8.2007 10:18
Сообщение #8

 i 
Уведомление:
Тему переместил, т.к. имхо это всё же веб
 
Ответить | Цитировать+
lexa
Аватар не загружен
сообщение 05.8.2007 09:19
Сообщение #9

Лорд Дмитрий
прошу прокомментировать, что вы думаете по этому поводу
http://www.captain.at/ajax-file-upload.php ab.gif
 
Ответить | Цитировать+
Маркизочка

Иконка группы
Увлеченный
25
Сообщений
сообщение 13.6.2019 23:15
Сообщение #10

тра та та не поняла я ничего
 
Ответить | Цитировать+
   Ответить в эту тему   Открыть новую тему
Информация
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Быстрый переход:
 
Вверх
2006-2008 Интересное.инфо. Русская версия IP.Board © 2019  IPS, Inc.
Лицензия зарегистрирована на: Interesnoe.info
  Rambler's Top100