Я использую 2 файла index.js, upload.php попытаюсь загрузить файл (img) через ajax, и если успех uploadfile_show
в div uploadfile_show
.
но это не сработает, у меня мало вопросов, а ниже – мой код какого-либо предложения?
Благодарю.
upload.php
1. form enctype
еще нужно добавить?
2. if($_FILES)
и проверить размер $ _FILES или tmp_name по-прежнему использовать $_FILES
?
if($_FILES){ $filename = $_FILES['uploadfile']['name']; $filetmp = $_FILES['uploadfile']['tmp_name']; $filesize = $_FILES['uploadfile']['size']; if($filesize < 1000000){ move_uploaded_file($filetmp,'upload/tmp/'.$filename); print" upload success <img src=\"upload/tmp/$filename\"> "; } else{ } } else{ print" <div class=\"uploaddiv\"> <form enctype=\"multipart/form_data\"> <input type=\"type\" name=\"uploadfile\"> <input type=\"submit\" value=\"upload\" class=\"btn\"> </form> </div> "; } print" <div class=\"uploadfile_show\"></div> ";
index.js
3. Это несколько строк, это правильно?
var uf = $('.uploaddiv form');var fd = new FormData(uf);fd.append('uploadfile', uploadfile);
data: fd,
4. Что я пропустил или не так?
$('.btn').click(function(){ var uf = $('.uploaddiv form'); var fd = new FormData(uf); fd.append('uploadfile', uploadfile); $.ajax({ type: "POST", url: "upload.php", data: fd, processData:false, contentType: false, success: function(html){ $('.uploadfile_show').append(html); } }); });
FormData
принимает элемент формы в своем конструкторе, а не объект jQuery, также, когда вы используете ajax для отправки формы, которую вы должны будете предотвратить, чтобы ее действие по умолчанию (то есть preventDefault()
$('.btn').click(function(e){ e.preventDefault(); var uf = $('.uploaddiv form'); var fd = new FormData(uf[0]); $.ajax({ type: "POST", url: "upload.php", data: fd, processData:false, contentType: false, success: function(html){ $('.uploadfile_show').append(html); } }); });