2013-07-10 7 views
0

Итак, я пытался и пытался конвертировать мой сайт из загрузки статусов с изображениями и без них, используя только PHP и HTML для использования PHP, AJAX и HTML, поэтому ему не нужно создавать совершенно новый загрузку страницы, чтобы успешно обновить базу данных, и это было хорошо, и мне пришлось загружать изображения.Загрузите файл на сервер через AJAX

Мои JavaScript/JQuery/AJAX код выглядит следующим образом:

$(function() { 
$("#statusupdate").on('submit', function (e) { 
    var category = $("#statusupdate input[type=radio]:checked").val(); 
var text = $("textarea#statusupdate_text").val(); 
var file = $("input#file").val(); 
$.ajax({ 
type: "POST", 
url: "snippets/post_statusupdatequery.php", 
data: { category : category, text : text, file : file }, 
success: function() { 
$('#statusupdate').html("<div id='success_status'></div>"); 
$('#success_status').html("<h2>Post Submitted!</h2>") 
.append("<p>We will be in touch soon.</p>") 
.hide(); 
} 
}); 
    return false; 
e.preventDefault(); 
}); 
}); 

http://pastebin.com/fSGFa32D и мой PHP код выглядит следующим образом:

if (!empty($_FILES['userfile'])) { 
$raw_text = $_POST['text']; 
$text = mysql_real_escape_string($raw_text); 
$uploaddir = '/var/www/images/imageupdate/'; 
$filename = "".$id."-".$time.""; 
$uploadfilenam = basename($filename); 
$uploadfilename = $uploadfilenam.".png"; 
$uploadfile = $uploaddir.$uploadfilename; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
mysql_query("INSERT INTO imagepost 
    (userid, text, image, date) 
    VALUES('$id', '$text', '$uploadfilename', '$time') ") or die(mysql_error()); 
      } 
} else { 
    echo '<script>alert(" Select a file to upload! ");</script>'; 
    } 

http://pastebin.com/6Yam6Mtd

В настоящее время, насколько я знаю , он терпит неудачу в первом выражении if в коде PHP, и у меня есть googled и поиск по всему стековому потоку, но я не могу найти про подобный этому.

Так что, пожалуйста, помогите, что я пропустил, чтобы получить файлы, чтобы «отправить через AJAX» на PHP?

+0

Пожалуйста, внесите сюда свой код. – samayo

+0

@Simon_eQ Сделано! –

ответ

0

вы не можете загрузить файл, используя этот синтаксис яваскрипта

var file = $("input#file").val(); 

использовать JQuery Ajax form представить формы с элементами файлов в нем. Также убедитесь, что форма имеет enctype=multipart/form-data

Чтобы получить форму Аякса работать сначала настроить ваш HTML формы

<form id="myform" ...>.........</form> 

Тогда вы можете иметь jquery код, прикрепленный к форме представить события просто делать

$('#myform').ajaxForm(); //you can pass the same options as you would pass to $.ajax(); 
+0

Форма имеет право enctype. Но я не совсем понимаю, как работает аякс-форма, даже глядя на примеры. На данный момент после тестирования у меня в настоящее время только JS-код на главной странице с сайта, который вы связали, поэтому, когда я нажимаю кнопку отправки, я получаю «Спасибо за ваш комментарий!». но он ничего не загружает или нет, мне жаль, но я не совсем понимаю, как работает форма ajax. –

+0

взгляните на мой обновленный ответ – DevZer0

+0

только две вещи, которые я не получаю прямо сейчас 1. Где я должен положить $ ('# myform'). AjaxForm() ;? В submit (onclick) или просто в