Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как отправить в с помощью XMLHttpRequest одновременно данные полей формы и изображение
 
 автор: Prihod   (26.04.2007 в 15:01)   письмо автору
 
 

Как отправить в с помощью XMLHttpRequest одновременно данные полей формы и изображение
Ведь для данных формы Content-Type: application/x-www-form-urlencoded;charset=windows-1251, а для изображения Content-Type: multipart/form-data

   
 
 автор: coloboc66   (26.04.2007 в 15:38)   письмо автору
 
   для: Prihod   (26.04.2007 в 15:01)
 

Ну к примеру:

<form name=form1 method="post" action=file1.php>
<!--Здесь текстовые поля-->
</form>
<form name=form2 method=post action=file2.php>
<!--Здесь рисунок -->
</form>
<input type=button onclick="document.forms['form1'].submit();document.forms['form2'].submit()">

Правда получится не идеально одновременно, но ничего.
А если отсылать аяксом, то вообще будет красиво...

   
 
 автор: Prihod   (26.04.2007 в 16:06)   письмо автору
 
   для: coloboc66   (26.04.2007 в 15:38)
 

Дело в том что данные формы нужно обработать в одном скрипте , их нужно внести в базу данных одним запросом

   
 
 автор: coloboc66   (26.04.2007 в 16:21)   письмо автору
 
   для: Prihod   (26.04.2007 в 16:06)
 

Тогда аяксом два раза отправлять данные одному и тому же РНР-файлу, но с разными параметрами content type в setRequestheader () аякса. Больше ничего в голову не приходит. Еще нужно уточнить- возможно ли вообще отправлять рисунки аяксом...

   
 
 автор: ilyaILF   (26.04.2007 в 16:34)   письмо автору
 
   для: coloboc66   (26.04.2007 в 16:21)
 

А почему бы не сделать единую форму для отправки и текста и картинки таким образом:
<form enctype="multipart/form-data" method="post" action="insert.php">
    Название картинки: <input name="picture_name" type="text" value="" size="41" /><br />
    Описание картинки: <textarea name="picture_description" cols="30" rows="5"></textarea><br />
    <input type="hidden" name="max_file_size" value="300000" />
    Файл картинки: <input name="picture_file" type="file" size="32" /><br />
    <input type="submit" title="Отправить файл" value="Отправить" />
    <input type="reset" title="Очистить форму" value="Очистить" />
</form>

Проверено - работало.

   
 
 автор: coloboc66   (26.04.2007 в 17:00)   письмо автору
 
   для: ilyaILF   (26.04.2007 в 16:34)
 

Может так и можно, я не пробовал, просто смущает enctype="multipart/form-data" - работает для текстовых полей?

   
 
 автор: ilyaILF   (26.04.2007 в 17:16)   письмо автору
 
   для: coloboc66   (26.04.2007 в 17:00)
 

Да, работает, только на сервере текстовый блок принимается с помощью обычного $_POST:
$value=$_POST[$name_field];

А файл, в данном случае картинка, с помощью $_FILES:
$value=file_get_contents($_FILES[$name_field][tmp_name]);    $value = mysql_escape_string($value);

Текст я вставлял в строковое поле mysql - char, text, а картинки соответственно в blob, точнее mediumblob.

   
 
 автор: Prihod   (26.04.2007 в 18:13)   письмо автору
 
   для: ilyaILF   (26.04.2007 в 17:16)
 

При установки enctype="multipart/form-data" и попытки принять текстовые данные с помощью $_POST ничего не получается массив оказывается пустым :(

   
 
 автор: ilyaILF   (26.04.2007 в 18:26)   письмо автору
 
   для: Prihod   (26.04.2007 в 18:13)
 

И атрибут method="post" у тега <form> тоже оставили?

   
 
 автор: Prihod   (26.04.2007 в 20:02)   письмо автору
 
   для: ilyaILF   (26.04.2007 в 18:26)
 

Да только я отправляю не через форму а через AJAX запрос

req.onreadystatechange=processReqChange;
req.open(post,url,true);
req.setRequestHeader("Content-Type", "multipart/form-data");
req.send(params);

   
 
 автор: coloboc66   (26.04.2007 в 22:32)   письмо автору
 
   для: Prihod   (26.04.2007 в 20:02)
 

Сначала попробуйте сделать, как советует ilyaILF - без аякса, традиционным способом. А картинка отправляется?.

   
 
 автор: Prihod   (27.04.2007 в 14:13)   письмо автору
 
   для: coloboc66   (26.04.2007 в 22:32)
 

без аякса все отправляется а с ним ничего, даже картинка и та не отправляется, походу причина в аяксе но где именно ????

   
 
 автор: coloboc66   (27.04.2007 в 15:44)   письмо автору
 
   для: Prihod   (27.04.2007 в 14:13)
 

Ну так поищите, где именно: сначала отправляйте только текстовые поля, потом - только картинку, потом - все вместе. И смотрите, что происходит на каждом этапе, где нарушается работа...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования