2013-01-24 4 views
2

Я использую 2 файла index.js, upload.php попытаюсь загрузить файл (img) через ajax и если успех добавляется к div uploadfile_show.
но он не работает, есть несколько вопросов и ниже - мой код - любое предложение?загрузить файл через ajax

Спасибо.

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); 
     } 
    }); 
}); 
+0

FormData работает только в последних браузерах - https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData. Вы проверили версию своего браузера? – Sithu

+0

@Sithu да мой браузер сафари 5 – user1775888

ответ

2

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); 
     } 
    }); 
}); 
+0

Спасибо за ответ! так что мой php прав? – user1775888

+0

@ user1775888 вам не хватает '/' здесь ''upload/tmp'. $ Filename',' 'upload/tmp /'.$ filename' также вы можете использовать 'basename',' $ filename = basename ($ _FILES ['uploadfile'] ['name']); ' – Musa

+0

, но после того, как я нажму btn, url изменится, как этот' index.php? uploadfile = 'и ничего не показывать .. – user1775888

Смежные вопросы