2016-04-17 3 views
-1

Зачем нужна эта ошибка? Я не хватает фрагментов кода? Если да, пожалуйста, дайте простое объяснение. Я очень новичок в ajax и jQuery. Я уже искал Google. Но многие из них технически относятся к загрузке изображений, которые я не понимаю. Помоги мне. Благодарю.Ошибка загрузки изображения AJAX с PHP

error

$(document).ready(function(e) { 

      $(".frmUpload").on('submit',(function(e) { 
        e.preventDefault(); 
        $(".upload-msg").text('Loading...'); 
        $.ajax({ 
         url: "processor2.php", 
         type: "POST", 

         success: function(data){ //function to be called if request succeeds 
          $(".upload-msg").html(data); 
         } 
        }); 
      })); 
    }); 

      <h1>Ajax Image Upload</h1> 
     <form action="" method="post" class="frmUpload"> 
      <input type="file" name="photoUpload" id="ajaxUpload"> 
      <input type="submit" value="UPLOAD"> 
     </form> 
     <div class="img-preview"></div> 
     <div class="upload-msg"></div> 

PHP скрипт приведен ниже;

<?php 
     // photoUpload was given to name attribute of the upload field in the form 
     if(is_uploaded_file($_FILES['photoUpload']['tmp_name']) && $_FILES['photoUpload']['error']==0) { 
      echo "The file was uploaded successfully to the temporary location, but has not been saved<br>"; 
      echo "<br>The file is temporary stored: ". $_FILES['photoUpload']['tmp_name']; 
      echo "<br>The file name was: ". $_FILES['photoUpload']['name']; 
      echo "<br>The file type is: ". $_FILES['photoUpload']['type']; 
      echo "<br>The file size (bytes) is: ". $_FILES['photoUpload']['size']; 

      //check file size 
      if ($_FILES['photoUpload']['size'] > 5242880) 
       die ("<hr>Sorry, this file is larger than 5 MB"); 

      echo "<hr>"; 
      $allowedExts = array("gif", "jpeg", "jpg", "png"); 
      $exp_array = explode(".", strtolower($_FILES['photoUpload']['name'])); 
      $extension = end($exp_array); 

      $allowedType = array("image/gif", "image/jpeg", "image/jpg", "image/png"); 

      if(!in_array($_FILES['photoUpload']['type'], $allowedType)) 
       die ("<br>Unsupported file type!"); 

      if(!in_array($extension, $allowedExts)) 
       die ("<br>Unsupported file extension!"); 

      // file_exists() - determine file has already been uploaded 
      $path = "C:/xampp/htdocs/PHP/". $_FILES['photoUpload']['name']; 

      if(!file_exists($path)){ 
       echo "<hr>File does not exist. It is safe to move the temporary file<br>"; 
       if(move_uploaded_file($_FILES['photoUpload']['tmp_name'], $path)){ 
        echo "The file was uploaded successfully."; 
       } 
       else{ 
        echo "File upload failed!"; 
       } 
      } 
      else{ 
       echo "<br>File already exist. Please upload another file"; 
      } 

     } 
     else{ 
      echo "Please select the file to upload<br>"; 
      echo "Error code: ". $_FILES['photoUpload']['error']; 
     } 
    ?> 
+1

Возможный дубликат [PHP: "Notice: Undefined переменной" и "Notice: Undefined индекс"] (http://stackoverflow.com/questions/4261133/php-notice-undefined-variable-and-notice -undefined-index) –

+1

Чистая система загрузки файлов AJAX невозможна из-за ограничений безопасности JavaScript. А также в вашем коде ajax-запрос пересылается без каких-либо данных. Эта ссылка может быть полезна http://stackoverflow.com/questions/ 2320069/jquery-ajax-file-upload –

ответ

1

Вы должны использовать «formData» для загрузки изображения с помощью ajax.

попробуйте под кодом. и проверьте на $_FILES['photoUpload']['tmp_name'] и $_FILES['photoUpload']['name'] переменные в вашем скрипте PHP.

$(".frmUpload").on('submit',(function(e) { 
        e.preventDefault(); 
        var formData = new FormData(this); 
        $.ajax({ 
         url: "processor2.php", 
         type: "POST", 
         data: formData, 
         async : true, 
         contentType: false,  // The content type used when sending data to the server. 
         cache: false,    // To unable request pages to be cached 
         processData:false, 
         success: function(data){ //function to be called if request succeeds 
          $(".upload-msg").html(data); 
         } 
        }); 
      })); 
+0

скрипт работает 100% при удалении async: true, Почему? В любом случае, спасибо большое – Praba

1

Асинхронная загрузка файлов, используя некоторые XMLHttpRequest (Ajax), технически не представляется возможным из-за ограничений безопасности JavaScript. Большинство примеров и руководств JavaScript называют этот метод еще Ajax-загрузкой, а изображение или файл загружаются с помощью «виртуального IFRAME». Вы можете использовать сторонние плагины для реализации функции загрузки файлов ajax.

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