01.05.2016, 12:24
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
как вернуть переменую в swfupload
Здравствуйте.Данный скрипт работает на сайте без аякса.Те после выбора файлов происходит перезагрузка для записи в базу.Хочу переделать на аякс, что бы сразу в базу не писалось, а просто выводилось на странице.Но не понимаю как вернуть файлы. Вот скрипт инициализации.
var swfu;
var uploadedCount = 0;
window.onload = function() {
var settings = {
flash_url: "/includes/swfupload/swfupload.swf",
upload_url: upload_url,
post_params: {"sess_id" : sess_id, "item_id" : item_id,"item_user" : item_user,"item_cat" : item_cat},
file_size_limit: "400 KB",
file_types: "*.jpg;*.png;*.gif;*.jpeg;*.JPG;*.PNG;*.GIF;*.JPEG",
file_types_description: "",
file_upload_limit : max_files,
file_queue_limit : 0,
custom_settings : {
progressTarget : "fsUploadProgress",
cancelButtonId : "btnCancel"
},
debug: false,
// Button settings
button_image_url: "/includes/swfupload/uploadbtn.png",
button_width: "80px",
button_height: "65px",
button_placeholder_id: "spanButtonPlaceHolder",
// The event handler functions are defined in handlers.js
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
queue_complete_handler : queueComplete // Queue plugin event
};
swfu = new SWFUpload(settings);
};
function queueComplete(numFilesUploaded) {
if (numFilesUploaded>0){
// window.location.href = upload_complete_url;
}
}
Предположим ajax.php возвращает переменую или массив $file. Как мне её теперь вернуть на страницу, upload_complete_url, как я понимаю?
|
|
01.05.2016, 13:23
|
Кандидат Javascript-наук
|
|
Регистрация: 27.04.2015
Сообщений: 99
|
|
http://learn.javascript.ru/ajax-xmlhttprequest
Тут об AJAX. Все просто и доступно - делаем запрос, получаем ответ и обрабатываем его.
При прочтении этой темы у меня возникло впечатление что вы не в курсе что оно такое AJAX и как работает. Я так и не понял при чем тут ajax.php
|
|
01.05.2016, 14:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
ureech,
swfupload.swf как раз для асинхронной загрузки, хотя можно и пренебречь ею. Для современных браузеров это уже пережиток, они и без этого сами справляются.
А вот при успешной загрузке возвращаются не файлы, а либо теги изображений, либо только пути шлюзов для них, и поместив это на клиенте, можно получить изображения.
|
|
01.05.2016, 14:48
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
laimas,В этом и и было дело, что не понятно как на клиенте получить эти теги.Вроде нашёл решение, не знаю как будет работать, посмотрю.После обработки и загрузки фото в
function queueComplete(numFilesUploaded) {
if (numFilesUploaded>0){
// window.location.href = upload_complete_url;
}
}
передал аякс запросом что надо
function queueComplete(numFilesUploaded) {
if (numFilesUploaded>0){
$.post("/components/board/ajax/get_photo.php", {"user_id":item_user}, function(data) {
alert(data)
});
}
}
обработал и теперь на выходе имею имена файлов.
|
|
01.05.2016, 14:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Вам не просто имена нужны, а пути на сервере куда они были загружены, ну или если загрузка постоянно в фиксированный каталог или же каталог перед операцией определен, то достаточно и имен, но с условием, что используются оригинальные имена, а не сервер их формирует при загрузке.
А уж по ним вывести изображения на клиенте, так какая тут может быть проблема?
|
|
01.05.2016, 16:06
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
laimas,
Всё верно. Проблема на данный момент в следующем.Имею на выходе
$.post("/components/board/ajax/get_photo.php", {"user_id":item_user}, function(data) {
document.getElementById('load').innerHTML= data;
});
строку со списком файлов.
. .. 1dfe4f3626dbce88db21157698e59009.jpg 2096a1c62e80c92fe47bb3e9b1618e77.jpg 394d20c2475c9529607fbe5fc7acd33a.jpg 4040d526d29405cb7d2e6b6ca7ace790.jpg 7e4082367c2ea4c26d556ad1afaf38ff.jpg 9481a0a7ff9742548f71ba3656c9a668.jpg a05e7aafcbef351885a8789d55aa078d.jpg b3c7778c6dab5ee7455deaec13d9c0b6.jpg f9b13106b167d7c17afe9fd94352001b.jpg
Не понимаю как мне их превратить в картинки. В том плане, что вставить имя в img src="" , получить нужное кол-во и превратить в какой то динамический список html, типа <ul><li>$file</li></ul>
Пробовал выводить в цикле, и формировать html,не выводит.
|
|
01.05.2016, 16:11
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А зачем так передавать, лучше в JSON формате, хотя и эту полученную строку можно разбить по пробелу на массив:
data = data.split(' ');
но должна быть гарантия того, что пробел между именами один, до и после строки нет пробелов, иначе при формировании изображений проверять не пустое ли значение.
|
|
01.05.2016, 16:22
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Пробовал, не работает.Не превращает в массив.
|
|
01.05.2016, 16:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ureech
|
Пробовал, не работает.
|
Интересно как?
var s = '1dfe4f3626dbce88db21157698e59009.jpg 2096a1c62e80c92fe47bb3e9b1618e77.jpg 394d20c2475c9529607fbe5fc7acd33a.jpg 4040d526d29405cb7d2e6b6ca7ace790.jpg 7e4082367c2ea4c26d556ad1afaf38ff.jpg 9481a0a7ff9742548f71ba3656c9a668.jpg a05e7aafcbef351885a8789d55aa078d.jpg b3c7778c6dab5ee7455deaec13d9c0b6.jpg f9b13106b167d7c17afe9fd94352001b.jpg';
alert(s.split(' ')[3])
Да и строка, это не лучшее в данном случае. Во-первых где пути? Если путь у всех общий и известен, то нет проблем, а если нет? Или путь есть понятие динамическое? А гарантия, что все загрузились?
Ведь лучше же возвращать в JSON:
data = {
"msg" : //сообщение сервера по итогам
"path" : "path", //общий путь загруженных
"ims" : ["1dfe4f3626dbce88db21157698e59009.jpg", "2096a1c62e80c92fe47bb3e9b1618e77.jpg", ...], //успешно загруженные
"error" : //ошибки при загрузке и оригинальные имена не загруженных файлов
/// и т.д. и т.п....
}
|
|
01.05.2016, 16:45
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Сообщение от laimas
|
Интересно как?
|
Так и пробовал.Всё равно строка,длинющая.
С путями и всем прочим порядок.
Сообщение от laimas
|
Ведь лучше же возвращать в JSON:
|
Согласен,но написанное вами мне не понятно.Как это получается?
И мне надо только имена файлов.Всё остальное готово и ждёт.
|
|
|
|