php + Ajax + file

Dimexio

Новичок
Здравствуйте.

Не могу разобраться с отправкой данных и файла с помощью Ajax. Не передаются данные поля file. Поле text передается. Выяснил, что это из-за serialize(). Предполагаю, нужно использовать FormData. Но теперь не могу никак понять, как переделать существующий код. Пожалуйста, помогите!

index.php:
PHP:
<div class="divError" id="error"></div>
<form action="javascript:void(0);" name="myform" id="myform" enctype="multipart/form-data">
<input type="text" name="LAST_NAME">
<input type="file" name="image">
<input type="submit" value="Сохранить" id="submit" onclick="sendform();">
</form>

<script language="JavaScript" type="text/javascript">
function sendform(){
   var msg=$('#myform').serialize();
   document.myform.submit.disabled=true;
   document.myform.submit.value="Подождите...";
   $.ajax({
     type:'POST',
     url:"ajax.php",
     data:msg+"&action=sendform",
     cache:false,
     success:function(data){
       $("#error").html(data);
       document.myform.submit.disabled=false;
       document.myform.submit.value="Отправить";
     }
   });
}
</script>
ajax.php:
PHP:
<?
print_r ($_POST);
?>
Хотелось бы без плагина.
 
Последнее редактирование:

Hello

Новичок
Без плагина не получится. Файлы нельзя сериализовывать.
 

ksnk

прохожий
А в чем проблема нагуглить про FormData? Вот, например, компактные и годные примеры работы с ним.
 

ksnk

прохожий
Топикстатер сам говорит о FrameData, может оно ему и надо?
В IE 9 и 8 что делать будешь?
Если нужно будет топикстартеру работать на всяких калеках - можно посоветовать iframe-транспорт. Тоже не сильно страшно, если считать по количеству собственноручно написанных строк.

Это я просто чужие плагины не люблю.
 
Сверху