2014-09-05 4 views
-1

Я слежу за видеоуроком по youtube для загрузки AJAX, я знаю много javascript, jquery и т. Д., Но это меня озадачило.Uncaught SyntaxError: Неожиданный токен <

мой код ниже, может кто-нибудь просветить меня, почему это происходит, когда я пытаюсь укрепить более одного файла или в некоторых случаях 1 файл.

Я включил свой код ниже, его не идеально, как я сказал, что я следую вместе с видеоуроком.

<?php 

if (!empty($_FILES['file'])) 
{ 
foreach($_FILES['file']['name'] as $key=>$name) 
{ 
    if ($_FILES['file']['error'][$key] == 0 && move_uploaded_file($_FILES['file']['tmp_name']  [$key], "uploads/{$name}")) 
    { 
     $uploaded[] = $name; 
    } 
} 

if (!empty($_POST['ajax'])) 
{ 
    die(json_encode($uploaded)); 
} 
} 

?> 

<html> 
<head> 
<title></title> 
<script type="text/javascript" src="upload.js"></script> 
</head> 
<style type="text/css"> 
#upload_progress {display: none;} 
</style> 
<body> 

<div id="uploaded"> 
     <?php 
      if(!empty($uploaded)) 
      { 
       foreach ($uploaded as $name) { 
        echo '<div><a href="uploads/'.$name.'">'.$name.'</a></div>'; 
       } 
      } 
     ?> 
</div> 

<div id="upload_progress"></div> 

<form method="post" action="" enctype="multipart/form-data"> 
    <input type="file" id="file" name="file[]" multiple="multiple"> 
    <input type="submit" id="submit" value="upload"> 
</form> 

</body> 
</html> 

И мой файл JS является

var handleUpload = function(event) { 
event.preventDefault(); 
event.stopPropagation(); 

var fileInput = document.getElementById('file'); 

var data = new FormData(); 

data.append('ajax', true); 

for (var i = 0; i < fileInput.files.length; ++i) 
{ 
    data.append('file[]', fileInput.files[i]); 
} 

var request = new XMLHttpRequest(); 

request.upload.addEventListener('progress', function(event) { 
    if (event.lengthComputable) 
    { 
     var percent = event.loaded/event.total; 
     var progress = document.getElementById('upload_progress'); 
     while (progress.hasChildNodes()) 
     { 
      progress.removeChild(progress.firstChild); 
     } 
     progress.appendChild(document.createTextNode(Math.round(percent * 100) + '%')); 
    } 



}); 

request.upload.addEventListener('load', function(event) { 
    document.getElementById('upload_progress').style.display = 'none'; 
}); 

request.upload.addEventListener('error', function(event) { 
    alert("Upload Failed"); 
}); 

request.addEventListener('readystatechange', function(event) { 
    if (this.readyState == 4) { 
     if (this.status == 200) 
     { 
      var links = document.getElementById('uploaded'); 
      console.log(this.response); 
      var uploaded = JSON.parse(this.response); 
      var div, a; 

      for (var i = 0; i < uploaded.length; i++) 
      { 
       div = document.createElement('div'); 
       a = document.createElement('a'); 
       a.setAttribute('href', 'uploads/' + uploaded[i]); 
       a.appendChild(document.createTextNode(uploaded[i])); 
       div.appendChild(a); 
       links.appendChild(div); 
      } 
     } else { 
      console.log("error" + this.response); 
     } 
    } 
}); 

request.open('POST', 'index.php'); 
request.setRequestHeader('Cache-Control', 'no-cache'); 

document.getElementById('upload_progress').style.display = 'block'; 

request.send(data); 


} 

window.addEventListener('load', function(event) { 
var submit = document.getElementById('submit'); 
submit.addEventListener('click', handleUpload); 

}); 

Изначально видео было мне с помощью Eval для переменной загруженном, я изменил это JSON.parse, я не хочу быстро исправить, а скорее ответьте, почему это не работает?

Благодаря Бен

+0

Ознакомьтесь с инструментами разработчика вашего браузера. Вы можете увидеть свой запрос Ajax на вкладке «Сеть»? Правильно ли он отформатирован? Получает ответ? Правильно ли ответ? – Quentin

+0

Что такое сообщение об ошибке с линией, содержащей ошибку – Ahmad

+0

Да, если я использую один файл, он форматирует его в порядке, если я использую несколько файлов, он возвращает источник индекса. php, а не файл, отформатированный массив. Я просто не понимаю, почему он это сделает. – clearcut89

ответ

0

я узнал, что проблема была, в файле php.ini есть ограничение размера на моем сервере для загрузки файлов, я увеличил, что и теперь он работает нормально.

Любой, у кого такая же проблема, проверьте размер выгрузки!

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