我正在寫一個非常簡單的記事本應用程序。 用戶可以獲取「文件」(實際上它只是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調用來保存文件工作得很好。
忘了提及我確實包含了該標題。 – hesonline