как вернуть переменую в 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, как я понимаю? |
http://learn.javascript.ru/ajax-xmlhttprequest
Тут об AJAX. Все просто и доступно - делаем запрос, получаем ответ и обрабатываем его. При прочтении этой темы у меня возникло впечатление что вы не в курсе что оно такое AJAX и как работает. Я так и не понял при чем тут ajax.php |
ureech,
swfupload.swf как раз для асинхронной загрузки, хотя можно и пренебречь ею. Для современных браузеров это уже пережиток, они и без этого сами справляются. А вот при успешной загрузке возвращаются не файлы, а либо теги изображений, либо только пути шлюзов для них, и поместив это на клиенте, можно получить изображения. |
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) }); } } обработал и теперь на выходе имею имена файлов. |
Вам не просто имена нужны, а пути на сервере куда они были загружены, ну или если загрузка постоянно в фиксированный каталог или же каталог перед операцией определен, то достаточно и имен, но с условием, что используются оригинальные имена, а не сервер их формирует при загрузке.
А уж по ним вывести изображения на клиенте, так какая тут может быть проблема? |
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,не выводит. |
А зачем так передавать, лучше в JSON формате, хотя и эту полученную строку можно разбить по пробелу на массив:
data = data.split(' '); но должна быть гарантия того, что пробел между именами один, до и после строки нет пробелов, иначе при формировании изображений проверять не пустое ли значение. |
Пробовал, не работает.Не превращает в массив.
|
Цитата:
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" : //ошибки при загрузке и оригинальные имена не загруженных файлов /// и т.д. и т.п.... } |
Цитата:
С путями и всем прочим порядок. Цитата:
И мне надо только имена файлов.Всё остальное готово и ждёт.:) |
Цитата:
Цитата:
|
Цитата:
function queueComplete(numFilesUploaded) {, в которую помещён запрос. |
Данная функция ожидает число numFilesUploaded, однако же вы показываете строку, якобы которую все таки получаете, и какие тогда проблемы?
Да и вообще, может в помойку этот swfupload? Ведь в свете HTML5 появились новые плагины для загрузки файлов, которые и для браузеров пенсионеров предоставляют возможности. |
Хм, каким образом можно передать в AJAX какие-то данные без запроса со стороны клиента?
|
Часовой пояс GMT +3, время: 14:59. |