новичок ищет объяснение того, как работает этот скрипт загрузки изображений php ajax - PullRequest
0 голосов
/ 04 ноября 2011

Я раньше не очень много использовал javascript, и я тоже не очень-то программист php, если подумать об этом, но я пытаюсь научиться, создав небольшой сайт.У меня есть форма с вводом файла для загрузки, которую я пытаюсь сделать сексуально привлекательным с этим замечательным сценарием , но там нет учебника, и код не комментируется

(я думаю) Я знаю, как заставить это работать нормально, но мне интересно, как это работает.Кто-нибудь хочет взглянуть на него и рассказать, что делает весь код в файле js и php?

Я бы очень признателен:)

1 Ответ

2 голосов
/ 04 ноября 2011

Я бы не рекомендовал использовать эту библиотеку, во-первых, поскольку есть намного лучшие, но ваш вопрос был в том, как работает эта библиотека, а не в том, хорошая она или нет.

Вот так:

  1. ajaxUpload вызывается одной из кнопок в форме загрузки.
  2. ajaxUpload first обеспечивает правильность всех аргументов функции , создавая окно предупреждения (!), Если с одним из них возникла проблема. (Было бы лучше выдать ошибку, используя вместо этого throw "error message".)
  3. ajaxUpload, затем создает iframe , используя document.createElement, и присваивает ему нулевую ширину и высоту, чтобы он был невидимым перед добавлением его в документ. Он дает фрейму имя ajax-temp.
  4. ajaxUpload добавляет функцию doUpload в качестве onload прослушивателя в iframe. Он использует функцию addEvent как кросс-браузерный способ сделать это.
  5. Далее ajaxUpload устанавливает атрибут target формы вызова , чтобы указывать на iframe, используя имя, которое он дал iframe ранее. Это заставляет форму отправлять в iframe вместо замены текущей страницы. Функция также устанавливает некоторые другие атрибуты в форме, хотя было бы лучше добавить эти атрибуты в исходный HTML-код, а не из Javascript.
  6. Наконец, ajaxUpload отправляет форму , используя form.submit().
  7. Браузер отправляет форму на сервер, вызывая запуск ajaxupload.php.
  8. В ajaxupload.php скрипт сначала проверяет, действительно ли браузер отправил файл (в случае, если любопытный пользователь посетил URL-адрес вручную вместо отправки формы), затем вызывает функцию uploadImage с кучей параметров, которые он получил от объекта $_REQUEST.
  9. uploadImage выполняет несколько проверок аргументов, которые он получает от клиента, проверяя, что файл не слишком большой, имеет правильное расширение и т. Д. Если все проверки пройдены, он сохраняет изображение и возвращает имя файла, в котором было сохранено изображение. В противном случае возвращает список ошибок.
  10. Если результат, возвращаемый uploadImage, не является массивом ошибок, сценарий возвращает сообщение об успехе и тег <img> с его src, установленным в URL изображения. В противном случае возвращается сообщение об ошибке.
  11. На клиенте возвращение сообщения об успехе или ошибке вызывает событие load в iframe, чтобы вызвать . Функция doUpload, которая зарегистрирована как слушатель, называется .
  12. doUpload удаляет себя как слушателя из iframe и запускает некоторый код javascript в контексте iframe, устанавливая атрибут src в iframe. Этот код копирует содержимое iframe на родительскую страницу.
  13. Наконец, doUpload удаляет iframe из документа, ожидая некоторое время в некоторых браузерах.

Ух ты, это точно заняло время, чтобы написать.

...