Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.11.2012, 10:24
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Отправка файлов вместе с данными
Есть, к примеру, такая форма:
<form action="action.php?type=newfile" method="POST" enctype="multipart/form-data">
    <input type="text" name="title">
    <input type="file" name="myfile" multiple="multiple"><br><br>
    <span id="dropBox">Перетащите файл на эту область</span>
</form>

И кусок скрипта для отправки данных:
data = объект image или blob

var formData = new FormData();
formData.append('file', data);
formData.append('filenote', {type:'avatar',title:'it+s me'});

var xhr = new XMLHttpRequest();
xhr.open("POST", $.('form').attr('action'));
xhr.send(formData);

В итоге получаю 3 массива
$_GET: type => newfile
$_FILE: file => array(данные файла)
$_POST: filenote => [object Object]

C данными из ПОСТ невозможно работать, делаю по-другому:
в js: JSON.stringify({type:'avatar',title:'it+s me'})
в php: json_encode($_POST['filenote']);

На выходе: "{\"type\":\"avatar\",\"title\":\"it+s me\"}"
Уже лучше, но все равно невозможно работать.

Как в ПОСТ получить filenote => array(мои данные)?

P.S. Желательно так же получать filenote => var, если передается не объект, а переменная и желательно все это делать в js, а в ПОСТ получать очищенные данные

Последний раз редактировалось Shitbox2, 08.11.2012 в 10:47.
Ответить с цитированием
  #2 (permalink)  
Старый 08.11.2012, 10:49
Аватар для cmd
cmd cmd вне форума
Профессор
Отправить личное сообщение для cmd Посмотреть профиль Найти все сообщения от cmd
 
Регистрация: 19.03.2011
Сообщений: 177

Я понятия не имею как правильно с точки зрения JS, но
<?php 
$str = '{\"type\":\"avatar\",\"title\":\"it+s me\"}';
$json = stripslashes($str);
$array = json_decode($json, true);
print_r ( $array ); // вернет ассоциативный массив
?>
__________________
Cogito, ergo sum
Ответить с цитированием
  #3 (permalink)  
Старый 08.11.2012, 11:03
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Вот я тупой! Не ту функцию использовал! Зачем-то закодировал в JSON, вместо обратного.

Нужно использовать
json_decode($_POST['filenote'], true)
тогда все хорошо.

Опять же, остается вопрос, как и от нее избавиться.

В js должно быть что-то типа:
note = переменная или объект js
formData.append('filenote', xfunction(note));

а в $_POST соответсвенно либо переменная, либо массив, которые можно использовать для дальнейшей обработки.

Собственно, какой должна быть xfunction(note)?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка БОЛЬШИХ файлов посредством ajax barcelona jQuery 7 12.10.2012 03:37
Download файлов greatilya Серверные языки и технологии 21 03.02.2012 22:30
SWFUpload - отображение выбранных файлов Барин AJAX и COMET 2 17.07.2011 10:07
Отправка файлов на сторонний сервер ВэйДлин Общие вопросы Javascript 1 08.05.2011 20:46
Отправка файлов через iframe goldmember AJAX и COMET 3 28.04.2010 18:14