Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: почему не начинается закачка файла по AJAX-запросу?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
246978
Отправлено: 30 Ноября, 2012 - 09:19:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


У меня есть такой запрос
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.ajax
  3.                         ({  
  4.                                 type: "POST",  
  5.                                 url: "ajax.php",  
  6.                                 data: "text=база",
  7.                                 success: function() {}
  8.                          });
  9.  

сам php скрипт должен возвращать файл
PHP:
скопировать код в буфер обмена
  1.  
  2.  header('Content-Description: File Transfer');
  3.                         header('Content-Type: application/octet-stream');
  4.                         header('Content-Disposition: attachment; filename=' . basename($file));
  5.                         header('Content-Transfer-Encoding: binary');
  6.                         header('Expires: 0');
  7.                         header('Cache-Control: must-revalidate');
  8.                         header('Pragma: public');
  9.                         header('Content-Length: ' . filesize($file));
  10.                         readfile($file);
  11.  


Но загрузка файла не начинается, если скрипт выполнить самостоятельно то всё ок, файл уходит. Помогите!


Отредактировано модератором: Мелкий, 30 Ноября, 2012 - 09:40:05
Предупреждаю о недопустимости использования капса. И обратите внимание на пункт правил 1.11
 
 Top
Zuldek
Отправлено: 30 Ноября, 2012 - 09:35:08
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




А с какой стати у вас должна начаться загрузка файла (и любое другое действие)?
по успешному получению ответа:
Цитата:
success: function() {}

у вас ничего не происходит.
Читать jquery ajax. Все примеры есть в мане.

(Отредактировано автором: 30 Ноября, 2012 - 09:37:57)

 
 Top
Panoptik
Отправлено: 30 Ноября, 2012 - 09:36:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




зачем здесь ajax? обратитесь к скрипту на прямую или сделайте location.href по success


-----
Just do it
 
 Top
246978
Отправлено: 30 Ноября, 2012 - 09:37:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


success: function() {}
Так не работает.
 
 Top
KingStar
Отправлено: 30 Ноября, 2012 - 09:38:41
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




афигеть, уже пытаются и файлы аяксом отдавать Не понял Не понял Не понял


-----
То что программа работает, не означает что она написана правильно!
 
 Top
246978
Отправлено: 30 Ноября, 2012 - 09:43:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


И все же можно ли решить проблему?
 
 Top
Zuldek
Отправлено: 30 Ноября, 2012 - 09:48:46
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Вам написали решение проблемы.
Оно заключается в том что при передаче запроса и/или получении ответа ваш скрипт ничего не делает.
А вы упорно не хотите смотреть в руководсво по ajax в jquery, где четко указано что за методы
.always(function() { }) .fail(function() {}) и обработка события success в функции:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  success: function(data) {}

Непонимание этого означает что вы не понимаете принципы использования ajax в jquery, и если вам просто написать готовое решение, которые вы примените без понимания, то это будет медвежья услуга.

(Отредактировано автором: 30 Ноября, 2012 - 09:51:10)

 
 Top
246978
Отправлено: 30 Ноября, 2012 - 09:52:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


Zuldek пишет:
Вам написали решение проблемы.
Оно заключается в том что при передаче запроса и/или получении ответа ваш скрипт ничего не делает.
А вы упорно не хотите смотреть в руководсво по ajax в jquery, где четко указано что за методы
.always(function() { }) .fail(function() {}) и обработка события success в функцци:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  success: function(data) {}


когда я обрабатываю ответ, то просто получаю структуру файла который передается, но мне нужно запустить загрузку файла. который был сформирован по выполнению запроса, передачу файла я делаю методом указанным в первом сообщении, но ответ получаю набор символов из файла, а нужно запустить загрузку этого файла. Как сделать?
 
 Top
Zuldek
Отправлено: 30 Ноября, 2012 - 09:57:29
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




очевидно, опять же, используя указанные методы и события перенаправлять на страницу которая отдаст файл для загрузки с соответствующими заголовками, либо передавать файл по ajax и сохранять на компьютере пользователя средствами js (правильнее сказать, - инициировать это сохранение с определенным расширением использовав полученный бинарник). Последний вариант с вероятностью 99.9% не для вашей задачи, но такое возможно.

(Отредактировано автором: 30 Ноября, 2012 - 09:58:41)

 
 Top
246978
Отправлено: 30 Ноября, 2012 - 10:02:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 273
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)

[+]


а как тогда перенаправить на другой скрипт и автоматически выполнить загрузку и еще а можно средствами JS отдать фаил из сервера пользователю. т.е . если есть ответ то тогда выгрузить указанный фаил?
(Добавление)
а если сделать так в ответ получить имя и путь файла для скачивание и выполнить location.replace(data);
 
 Top
Zuldek
Отправлено: 30 Ноября, 2012 - 10:18:28
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




1. Можно и элементарно. Как - вам указали выше.
2. Можно, но это не для вашей задачи, повторю. В любом случае часть работы вы будете делать jsом вместо браузера, что не рационально и в любом случае итогое сохранение файла будет производить браузер, вы только инициируете запрос на сохранение. Не стоит ради такой овчинки разбираться с плагином.
Подобное решение (сохранение файлов и данных средствами js) целесообразно использоваться если, вы, к примеру, будете сохранять файл не в файловой системе компьютера пользователя ( Закатив глазки ), а, например, в LocalStorage браузера (всякие обновления браузерной игры, например).

(Отредактировано автором: 30 Ноября, 2012 - 10:20:32)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB