X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Получить ответ от загрузчика php в javascript
gheka
gheka
Topic Starter сообщение 27.3.2012, 1:16; Ответить: gheka
Сообщение #1


Здравствуйте есть скрипт jQuery Uploadify. загрузчик файлов на сервер


$(document).ready(function() {
$("#uploadify").uploadify({
  'uploader'       : '../scripts/uploadify.swf', // Относительный путь к файлу uploadify.swf. По умолчанию uploadify.swf
  'script'         : '../goods_loader.php', // Относительный путь uploadify.php. По умолчанию uploadify.php. Это скрипт - загрузчик. Обязательно посмотрите его
  'cancelImg'      : '../scripts/cancel.png', // Относительный путь до картинки cancel.png. По умолчанию cancel.png
  'folder'         : '../files/', // Путь к папке, в которой Вы хотите сохранять загружаемые файлы.
                                      //Эту настройку можно опустить, тогда папку загрузки необходимо определить в uploadify.php
                                      //Помните! На большистве хостингов, папка, в которую Вы пытаетесь загрузить файлы должна быть доступна на запись, не забудьте выставить соответствующие права.
  'scriptData': {'id_g' : id_g,'id_s' : id_s}, // Передаём в загрузчик ID g и ID s
  
  'queueID'        : 'fileQueue', // ID элемента, в котором будет показываться очередь загрузки
        'queueSizeLimit' : '3', // Лимит очереди (максим. число загруж файлов). По умолчанию 999
  'auto'           : false, // Если истина, загрузка начнется сразу после выбора файлов
  'multi'          : true,  // Если истина, то разрешена загрузка нескольких файлов
        'fileDesc'       : 'только фотографии jpg', // Текст, который будет внизу появляющегося диалогового окна. Без этого параметра будет написано "Все файлы('.')"
        'fileExt'        : '*.jpg; *.jpeg; *.JPG; *.JPE; *.jpe', // разрешенные к загрузке файлы (остальные вдиалолговом окне будути скрыты)
        'sizeLimit'      : 1111111111, // Макс. Размер файла для каждой загрузки (в байтах). Если не указываем, ограничено будет только настройками Вашего сервера
        'simUploadLimit' : 1, // Ограничение на кол-во одновременных закачек. По умолчанию 1. Если значение равно 1, то загружаться будет 1 файл, а остальные будут стоять за ним в очереди. Если 2 - два загружаются, остальные ждут их  и т.д
        'buttonText'     : 'File', // Текст на кнопке. По умолчанию BROWSE. К сожалению русскийтекст не поддрживается
        'buttonImg'      : '../image_s/choose_files.png', // Путь до картинки, которая будет служить кнопкой. Компенсирует недостаток предыдущей. Если эта настройка указана, предыдущая будет проигнорирована
      'width' : 190,
   'height' : 43,
   // 'onInit'        : alert('Скрипт готов!'),// Функция, которая срабатывает, когда скрипт будет загружен. По умолчанию обработчик событий скрывает целевой элемент на странице и заменяет его с флэш-файл, затем создает очереди контейнера после него.
        /*
        'onSelect'       : function(event, queueID, fileObj){ // Функция, которая сработает, при выборе каждого файла. Пример:
                            var string =  'Имя фала: '     + fileObj.name  +'n';
                                string += 'Размер файла: ' + fileObj.size  + 'байтn';
                                string += 'Тип: '          + fileObj.type  + 'n';
                                string += 'ID в очереди: ' + queueID       +'n'; // уникальный ID файла, генерируется скриптом
                            alert(string)
                         },
        'onSelectOnce'  : function(event, data){   //Функция, которая вызывается один раз для каждой операции выбора.
                            var string  = 'Файлов в очереди: '                  + data.fileCount      +'n';
                                string += 'Было выбрано файлов: '               + data.filesSelected  +'n';
                                string += 'Заменено файлов в очереди: '         + data.filesReplaced  +'n';
                                string += 'Итоговый вес файлов в очереди: '    + data.allBytesTotal  +'n';
                            alert(string);
        },
        */
        'onProgress'    : function(event, queueID, fileObj, data){  // Срабатываети каждый раз в ходе изменений во време загрузки
                          var string   = 'Загружаем: '                             + fileObj.name            +'<br />';
                              string  += 'Размер: '                                + fileObj.size            +'<br />';
                              string  += 'Тип: '                                   + fileObj.type            +'<br />';
                              string  += 'загрузка текущего файла: '               + data.percentage         +'%<br />';
                              string  += 'загружено байт текущего файла: '         + data.bytesLoaded        +'<br />';
                              string  += 'загружено байт всей очереди: '           + data.allBytesLoaded     +'<br />';
                              string  += 'скорость загрузки, KB/s: '               + data.speed              +'<br />';
                              $('#info,#info2').show();
                              $('#info').html(string);
        },
        'onComplete'    : function(event, queueID, fileObj, response, data){ // Срабатывает когда файл загружен на сервер. По умолчанию файл удаляется из очереди, но мы можем и добваить свои какие-либо действия
                          var string   = 'Загружен файл: '                         + fileObj.name            +'<br />';
                              string  += 'Путь до файла: '                         + fileObj.filePath        +'<br />';
                              string  += 'Размер, байт: '                          + fileObj.size            +'<br />';
                              string  += 'Тип: '                                   + fileObj.type            +'<br />';
                              string  += 'Пришел ответ от сервера: '               + response                +'<br />';
                              string  += 'Файлов в очереди: '                      + data.fileCount          +'<br />';
                              string  += 'скорость загрузки, KB/s: '               + data.speed              +'<br />';
        
         // Вывод ошибок
         if(response == 1){alert('Изображение загружено');}'
         if(response == 2){alert('Произошла ошибка! Формат изображения неподходит.');}
         if(response == 3){alert('Произошла ошибка! Размер изобаржения превышает норму.');}
         if(response == 4){alert('Произошла ошибка! Попробуйте ещё раз загрузить изображение.');}
                            
                              $('#info2').append('<br />Фаил ' + fileObj.name + ' загружен!<br />');                      
          
        },
        'onAllComplete' : function(event, data){ // Срабатывает когда все загрузки завершены
                          var string   = 'Загружено файлов: '                      + data.filesUploaded       +'n';
                              string  += 'Ошибок: '                                + data.errors              +'n';
                              string  += 'Всего загружено kбайт: '                 + data.allBytesLoaded/1024 +'n';  
                        
                                $('#info,#info2').fadeOut(5000, function() { $('#info,#info2').html('');}); // Плавно прячем информационные блоки и затем очищаем их          
              location.reload();
  }
              
      
});
  
});


и есть обработчик - загрузчик php


if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
  
    if(!$_REQUEST[folder]) $folder = '../uploads/'; // Если в js-части мы не определили директорию загрузки, мы можем сделать это здесь
    else $folder = $_REQUEST['folder'];
  
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $folder . '/';
$ext = preg_replace('/(?:.*)(.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['Filedata']['name']); // определяем расширение загружаемого файла
$unic_name  = time().'_'.rand(0,1000).$ext;
    $targetFile =  str_replace('//','/',$targetPath) . $unic_name;



  move_uploaded_file($tempFile,$targetFile);
  echo "1"; // Отправляем ответ. Например, просто 1

[color=#000088][font=monospace][size=3][left]$res[/left][/size][/font][/color][color=#008080][font=monospace][size=3][/size][/font][/color][color=#339933][font=monospace][size=3][left]=[/left][/size][/font][/color][color=#008080][font=monospace][size=3][/size][/font][/color][color=#CC66CC][font=monospace][size=3][left]544[/left][/size][/font][/color][color=#339933][font=monospace][size=3][left];[/left][/size][/font][/color][color=#008080][font=monospace][size=3][left] передать это значение[/left][/size][/font][/color]
}

В
javascript скрипте есть элемент response передающий ответ под средством echo но им можно передать лишь одно значения а мне нужно хотя бы предать как минимум 2 значения.

Подскажите пожалуйста как мне передать полученное значение переменной допустим $res из загрузчика php в javascript который показан в самом начале?

И как мне его так открыть. ?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
c0ns0l3
c0ns0l3
сообщение 29.3.2012, 7:22; Ответить: c0ns0l3
Сообщение #2


Воспользуйся тем же response, и выведи им массив данных при помощи форматирование его в json (php::json_encode([array])), после чего js ($.parseJSON([string])) его декодирует. На выходе ты получишь уже в JS массив данных, который был передан одной переменной string.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gheka
gheka
Topic Starter сообщение 31.3.2012, 0:24; Ответить: gheka
Сообщение #3


Можно как то написать поподробнее или привести полностью код? Просто я делаю так:

PHP
$json_data = '{"name":"ii"}';
echo json_encode($json_data);
JS
var obj = jQuery.parseJSON(response);
  if(obj.name === "ii" ){
alert('ответ получен');
         }


Но сообщения не выводит значит я чтото делаю не так.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
c0ns0l3
c0ns0l3
сообщение 4.4.2012, 14:49; Ответить: c0ns0l3
Сообщение #4


Ну немного нита :)

в РНР у тебя идет массив, который ты должен конвертнуть в JSON. тоесть
$return = array ('name'=>'c0ns0l3','data'=>'some data text');
$json_return = json_encode($return);

в яваскрипте - после того, как ты применишь метод $.fn.parseJSON(response), ты на выходе получишь такую же переменную, которую ты кодировал в РНР еще, тоесть тот же массив данных. И обращаться к данным ты будешь типа:
var returned = $.parseJSON (response);
alert(returned['name']);

PS у тебя есть замечательные ф-ции, такие как в РНР var_dump а в JS - console.log (Chrom, Opera, FF) в который ты можешь выкинуть тупо всю свою переменную,обжект и ты в логе увидишь что у тебя там творится, и не тыкакть на впопад в название переменных.

PSS если ты хочешь всеголишь 2 переменные передать типа имя и еще что-то, то сделай разделитель между ними какой-то уникальный, типа "%*%*%??", после чего ты получишь одну переменную вида "c0ns0l3%*%*%??дата рождения допустим", что делать дальше с ней? применим ф-цию split('%*%*%??') к данной переменной, которая разобьет нам string на на массив, который будет иметь ряд данных в которых был разделителем тот самый "%*%*%??".


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Где получить виртуальную карту бесплатно?
22 Mixatraider 5504 2.3.2024, 0:08
автор: Alekser
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3397 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1240 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44901 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1889 26.5.2023, 20:48
автор: Mixatraider


 



RSS Текстовая версия Сейчас: 19.4.2024, 5:15
Дизайн