2016-03-06 81 views
0

我正在寫一個非常簡單的記事本應用程序。 用戶可以獲取「文件」(實際上它只是MySQL中的一行)來編輯它。
當直接提交表單的PHP文件(只是刪除e.preventDetfault),輸出是JSON編碼輸出我想:Ajax調用返回SyntaxError:意外的輸入結束

{"data":{"filename":"testfile","content":"this is the file content","lastupdate":"2016-03-06 13:13:30"}} 

然而,當通過下面的Ajax調用運行,它總是返回SyntaxError:意外的輸入結束。

形式

<form id="openfile" action="backend.php" method="POST"> 
<input type="text" name="filename" placeholder="Enter filename to open" id="filename" /> 
</form> 

jQuery的AJAX調用

$("#openfile").submit(function(e) { 

    var filename = $("#filename").val(); 

    openFile(filename); 

    e.preventDefault(); 

}); 


function openFile(filename) { 

    if(filename == "") { 
    return false; 
    } 


    $.ajax({ 
     type: "POST", 
     url: "backend.php", 
     data: {action: "load", file: filename}, 
     success: function(response) { 
     console.log(response); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      console.log("Status: " + textStatus); 
      console.log("Error: " + errorThrown); 
     } 
     }); 

} 

後端

 try { 

     $db = new PDO(DB_DSN, DB_USER, DB_PASS); 
     $sql = "SELECT `filename`, `content`, `lastupdate` 
       FROM `notepad` 
       WHERE `filename` = :filename 
       LIMIT 1"; 
     $sth = $db->prepare($sql); 
     $sth->bindParam(":filename", $_POST['file'], PDO::PARAM_STR); 
     $sth->execute(); 

     if($sth->rowCount() != 0) { 
      $result = $sth->fetch(PDO::FETCH_ASSOC); 
      $response['data'] = $result; 
      //echo json_encode($result); 
     } else { 
      $response['error'] = "File does not exist"; 
     } 

     } catch(PDOException $e) { 
     $response['error'] = $e->getMessage(); 
     } 

     // Return json data 
     echo json_encode($response); 

我肯定知道正確的數據被髮送(Chrome瀏覽器開發工具 - >網絡)。

使用幾乎相同的ajax調用來保存文件工作得很好。

回答

0

您是否嘗試過指定具體的數據類型爲JSON?

數據類型: 'JSON',

在你的Ajax調用

你正在發送一個json對象,但是你沒有指定返回類型。

相關問題