Ajax 调用返回语法错误:输入意外结束
Ajax call returns SyntaxError: Unexpected end of input
我正在开发一个非常简单的记事本应用程序。用户可以获取"一个文件"(实际上它只是MySQL中的一行)来编辑它。
当将表单直接提交到 php 文件时(只需删除 e.preventDetfault ),输出是我想要的 json 编码输出:
{"data":{"filename":"testfile","content":"this is the file content","lastupdate":"2016-03-06 13:13:30"}}
但是,当运行下面的 Ajax 调用时,它总是返回语法错误:意外的输入结束。
表格
<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 调用来保存文件就可以了。
您的问题类似于:Chrome:未捕获语法错误:输入意外结束
尝试为响应添加标头application/json
:
header('Content-Type: application/json');
echo json_encode($response);
您是否尝试过将数据类型指定为 Json?
即
数据类型:"json",
在你的阿贾克斯调用中。
您正在发回一个 json 对象,但尚未指定返回类型。
相关文章:
- 使用ajax的输入jquery意外结束
- jquery ajax”;SyntaxError:意外的输入结束“;基于有效的JSON
- jQuery Ajax+经典ASP返回错误'意外的输入结束'
- 使用.html()添加文本输入时出现意外行为
- 基于给出意外结果的提示输入的逻辑
- 清除输入字段值-STCombobox时出现意外的JS行为
- `同构的fetch`response.json()方法总是抛出意外的输入结束错误
- js文件的第1行出现意外的输入结束错误
- 未捕获的语法错误:输入JavaScript意外结束
- 未捕获语法异常:第1行输入意外结束
- 节点.js未定义:1 [语法错误:输入意外结束]
- Ajax 调用返回语法错误:输入意外结束
- 谷歌浏览器:语法错误:输入意外结束
- 输入意外结束
- JavaScript输入意外结束
- 未捕获语法错误:输入意外结束
- 未捕获的语法错误:输入意外结束-Javascript错误
- JS中的输入意外结束
- 第1行的输入意外结束
- 错误带有正确括号的输入意外结束