2014-10-07 2 views
0

Я пытаюсь загрузить изображение с помощью PHP и AJAX.Загрузить изображение, используя AJAX и PHP?

Без AJAX мое изображение/файл загружается отлично, но когда я пытаюсь использовать AJAX, страница не обновляется, я не получаю никакого изображения/файла, загруженного!

Вот мой код:

Мой PHP код, как я уже говорил выше, это отлично работает без AJAX:

if (isset($_POST['u_id_im'])) { 
if ($_FILES['fileField']['tmp_name'] != "") { 
    //$details = mysql_real_escape_string($_POST['details']); 
     $newname = "$askeru23.jpg"; 
     move_uploaded_file($_FILES['fileField']['tmp_name'], "users_fav/".$_GET['id']."/$newname"); 
    } 
} 

HTML форма:

<form id="imguploader" method="post" action="" enctype="multipart/form-data"> 
<label style="font-size:22px; color:#666; font-weight:bold; margin-top:50px; width:100%; height:50px; padding-top:50px;">Upload Photo</label><br /><br /> 
<?php echo $usersupload; ?> 
<input type="hidden" name="askeruim" id="askeru" value="<?php echo $askeru23; ?>"/><br /> 

<input type="hidden" value="<?php echo $u_id; ?>" name="u_id_im" /> 

<input type="file" name="fileField" id="fileField" /> 

<input type="submit" name="submit" id="closethebox" class="submit" value="UPLOAD" /> 
</form> 

JQuery код:

$(function(){ 
    $('#imguploader').on('submit', function(e){ 
     // prevent native form submission here 
     e.preventDefault(); 

     // now do whatever you want here 
     $.ajax({ 
      type: $(this).attr('method'), // <-- get method of form 
      url: $(this).attr('action'), // <-- get action of form 
      data: $(this).serialize(), // <-- serialize all fields into a string that is ready to be posted to your PHP file 
      beforeSend: function(){ 

      }, 
      success: function(data){ 
      } 
     }); 
    }); 
}); 

As сторона примечания, код AJAX находится в пределах функции готовности документа.

Не могли бы вы посоветовать это?

Благодаря

+0

Вы искали 'enctype'? вам нужно установить его в 'multipart/form-data' при отправке файлов. также загрузка файлов assync не поддерживается в старых браузерах/базовой сериализации. –

+0

@LoganMurphy, не уверен, что вы имеете в виду, глядя в enctype! не уверен, что вы подразумеваете, установив multipart/form-data. также старые браузеры не поддерживаются в моем приложении! более старые браузеры даже не поддерживаются их собственными разработчиками, поэтому его время для людей, чтобы прийти к 2014 году, или же остаться позади. – shell

+0

Возможный дубликат [Отправка multipart/formdata с помощью jQuery.ajax] (http://stackoverflow.com/questions/5392344/sending-multipart-formdata-with-jquery-ajax) –

ответ

0

form action="" ... вам нужно установить URL для Ajax, чтобы отправить, иначе его отправки на пустой адрес.

<form id="imguploader" method="post" action="<?=basename($_SERVER['PHP_SELF'])?>" enctype="multipart/form-data"> 
Смежные вопросы