Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2016, 12:24
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 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, как я понимаю?
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2016, 13:23
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

http://learn.javascript.ru/ajax-xmlhttprequest

Тут об AJAX. Все просто и доступно - делаем запрос, получаем ответ и обрабатываем его.
При прочтении этой темы у меня возникло впечатление что вы не в курсе что оно такое AJAX и как работает. Я так и не понял при чем тут ajax.php
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2016, 14:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

ureech,
swfupload.swf как раз для асинхронной загрузки, хотя можно и пренебречь ею. Для современных браузеров это уже пережиток, они и без этого сами справляются.
А вот при успешной загрузке возвращаются не файлы, а либо теги изображений, либо только пути шлюзов для них, и поместив это на клиенте, можно получить изображения.
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2016, 14:48
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 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)
			});
}
}

обработал и теперь на выходе имею имена файлов.
Ответить с цитированием
  #5 (permalink)  
Старый 01.05.2016, 14:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вам не просто имена нужны, а пути на сервере куда они были загружены, ну или если загрузка постоянно в фиксированный каталог или же каталог перед операцией определен, то достаточно и имен, но с условием, что используются оригинальные имена, а не сервер их формирует при загрузке.
А уж по ним вывести изображения на клиенте, так какая тут может быть проблема?
Ответить с цитированием
  #6 (permalink)  
Старый 01.05.2016, 16:06
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 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,не выводит.
Ответить с цитированием
  #7 (permalink)  
Старый 01.05.2016, 16:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А зачем так передавать, лучше в JSON формате, хотя и эту полученную строку можно разбить по пробелу на массив:

data = data.split(' ');


но должна быть гарантия того, что пробел между именами один, до и после строки нет пробелов, иначе при формировании изображений проверять не пустое ли значение.
Ответить с цитированием
  #8 (permalink)  
Старый 01.05.2016, 16:22
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Пробовал, не работает.Не превращает в массив.
Ответить с цитированием
  #9 (permalink)  
Старый 01.05.2016, 16:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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" : //ошибки при загрузке и оригинальные имена не загруженных файлов
    /// и т.д. и т.п....   
}
Ответить с цитированием
  #10 (permalink)  
Старый 01.05.2016, 16:45
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Сообщение от laimas
Интересно как?
Так и пробовал.Всё равно строка,длинющая.
С путями и всем прочим порядок.
Сообщение от laimas
Ведь лучше же возвращать в JSON:
Согласен,но написанное вами мне не понятно.Как это получается?
И мне надо только имена файлов.Всё остальное готово и ждёт.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вернуть результат из ajax внутри функции? Rooner AJAX и COMET 4 29.03.2013 19:15
Как вернуть контент на нужном языке в зависимости от того, что за фрукт зашел на сайт Shitbox2 Общие вопросы Javascript 11 10.03.2013 12:50
Как вернуть html-код с чужого сайта?!! Delovar jQuery 8 28.02.2013 04:14
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30