2012-12-07 169 views
4

運行此JSON.parse時,我一直在瀏覽器控制檯中收到「Uncaught SyntaxError:意外的輸入結束」。我試着縮短$元素只是$入境,但仍然沒有成功:Javascript JSON.parse responseText「意外的輸入結束」

function getFileList() { 
     var elements; 
    var foo = document.getElementById("filelist"); 
    var xhr = new XMLHttpRequest(); 
    xhr.addEventListener("load", complete, true); 

     // foo.innerHTML= xhr.responseText; 
    xhr.onreadystatechange = function() { 
     console.log(JSON.parse(xhr.responseText)); 

    } 


    xhr.open("GET", "php/dir_list.php", true); 
    xhr.send(null); 

    function complete() { 
     eventAssign(); 
     xhr.removeEventListener("load", complete, false); 
    } 

} 



<?php 
$files = array(); 
if ($handle = opendir('/trunk')) { 
    $i = 0; 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      $element = '<li><a class="files" id="listFile'.$i.'" data-filename="'.$entry.'" href=php/download.php?filename='.$entry.'>'.$entry.'</a></li>'; 
      $checksum = shell_exec("sum /trunk/".$entry); 
      $files[$entry] = array($element, $checksum); 
      $i++; 
     } 
    } 
    closedir($handle); 
} 
$files = json_encode($files); 
echo $files; 
?> 

編輯:固定getFileList()粘貼。

只是爲了避免混淆,問題仍然存在。下面是PHP dir_list.php輸出的JSON:

Web服務器httpfiles#PHP PHP/dir_list.php

{"lynx2.8.5rel.1-DOSc.zip":["<li><a class=\"files\" id=\"listFile0\" data-filename=\"lynx2.8.5rel.1-DOSc.zip\" href=php\/download.php?filename=lynx2.8.5rel.1-DOSc.zip>lynx2.8.5rel.1-DOSc.zip<\/a><\/li>","02625 2406\n"],"try.zip":["<li><a class=\"files\" id=\"listFile1\" data-filename=\"try.zip\" href=php\/download.php?filename=try.zip>try.zip<\/a><\/li>","18695 74\n"],"darn.tar.gz":["<li><a class=\"files\" id=\"listFile2\" data-filename=\"darn.tar.gz\" href=php\/download.php?filename=darin.tar.gz>darin.tar.gz<\/a><\/li>","56880 292\n"],"songs.txt":["<li><a class=\"files\" id=\"listFile3\" data-filename=\"songs.txt\" href=php\/download.php?filename=songs.txt>songs.txt<\/a><\/li>","43469  1\n"],"CentOS-6.3-x86_64-minimal-EFI.iso":["<li><a class=\"files\" id=\"listFile4\" data-filename=\"CentOS-6.3-x86_64-minimal-EFI.iso\" href=php\/download.php?filename=CentOS-6.3-x86_64-minimal-EFI.iso>CentOS-6.3-x86_64-minimal-EFI.iso<\/a><\/li>","04152 372736\n"]} 
+3

你的json是什麼樣的? – MortenSickel

+2

我不知道你是否只發布了一部分代碼,但是你錯過了getFileList函數的結束語} –

+0

http://stackoverflow.com/questions/3594923/chrome-uncaught-syntaxerror-unexpected-end-of - 輸入 – 2012-12-07 12:41:04

回答

15

發現了問題...我正在一個呼叫重複迴應...我補充說:如果(xhr.readyState == 4 & & xhr.status == 200){...並解決了問題。謝謝。