Javascript在XMLHttpRequest.onload/Uncaught SyntaxError中的JSON.parse(this.responseText)上停止:意外标记
我正在尝试用一个拖拽上传字段,但是经过几个小时的尝试和思考,为什么我没有得到我所期望的,第二天我就上床去尝试了 两天后,我迷路了 我正在尝试创建一个div,用户可以在其中放置多个图像,这些图像将立即上载到服务器。服务器响应应该是一个JSON字符串,包含一个或多个数组,其中包含上传文件的名称和路径。然后,该JSON字符串用于在上载页面上显示文件名 工作原理:Javascript在XMLHttpRequest.onload/Uncaught SyntaxError中的JSON.parse(this.responseText)上停止:意外标记,javascript,json,Javascript,Json,我正在尝试用一个拖拽上传字段,但是经过几个小时的尝试和思考,为什么我没有得到我所期望的,第二天我就上床去尝试了 两天后,我迷路了 我正在尝试创建一个div,用户可以在其中放置多个图像,这些图像将立即上载到服务器。服务器响应应该是一个JSON字符串,包含一个或多个数组,其中包含上传文件的名称和路径。然后,该JSON字符串用于在上载页面上显示文件名 工作原理: 我可以将图像拖放到div上,元素会改变样式 文件已上载 我正在从服务器接收一个JSON字符串 什么不起作用: 在dropzone di
- 我可以将图像拖放到div上,元素会改变样式
- 文件已上载
- 我正在从服务器接收一个JSON字符串
- 在dropzone div上方显示文件名
var upload = function(files) {
var formData = new FormData(),
xhr = new XMLHttpRequest(),
x;
for(x = 0; x < files.length; x = x + 1) {
formData.append('files[]', files[x]);
}
try {
console.log("DING!1");
console.log(this.responseText);
var data = JSON.parse(this.responseText);
console.log("DING!2");
displayUploads(data);
console.log("DING!3");
} catch(e) {
alert(e); //error in the above string(in this case,yes)!
}
xhr.open('post', 'url_to_upload_images.php?uniqueParamVal=' + new Date().getTime(), true);
xhr.send(formData);
};
this.responseText的类型为字符串。它都位于同一个域上。
错误:“意外令牌”,没有令牌显示…
我的代码有问题吗?如果是,可能的解决方案是什么? 如果没有,我可以用什么来获得我想要的相同结果
TL;博士: Javascript在
XMLHttpRequest.onload中的JSON.parse(this.responseText)
上停止
this.responseText的类型为字符串。
它都位于同一个域上。
错误:“意外令牌”,没有令牌显示…
编辑关于复制的
我已经阅读了给出的答案,但仍然不起作用
-JSON.parse()
只能接受字符串
=此的类型。responseText
是字符串
JSON.stringify(this.response);
也不行
-新行字符、制表符和反斜杠使其无效。
=我已经通过验证器运行了JSON字符串,它是有效的JSON。但可以肯定的是,我已经去掉了所有的反斜杠。实际上,我已经注释掉了一些PHP
if (move_uploaded_file($_FILES["files"]["tmp_name"][$position], $target_file)) {
$uploaded[] = array(
'name' => time().".".$imageFileType//,
//'file' => $target_file
);
}
返回:[{“name”:“1452529278.jpg”}]
但它仍然包含一个意外的标记。多亏了@apsillers,我找到了答案。我已将我的url_保存到_upload_images.php作为UTF 8,带有bom。这将创建一个返回JSON的不可见字符
将其保存为UTF 8文件,没有BOM表,可以正常工作 多亏了@apsillers,我找到了答案。我已将我的url_保存到_upload_images.php作为UTF 8,带有bom。这将创建一个返回JSON的不可见字符
将其保存为UTF 8文件,没有BOM表,可以正常工作 你说“停止”是什么意思?您是否检查了控制台中的错误?编辑哦,我想是的,因为您使用的是console.log()
。并且没有错误消息?如果注释掉解析行,下一个控制台行是否会启动?我没有错误。这是令人困惑的部分…您是否收到任何错误消息?应将JSON.parse包装在try-catch块中,以捕获无效JSON.TL上的错误;博士你的Json是无效的,检查一下你说的“停止”到底是什么意思?您是否检查了控制台中的错误?编辑哦,我想是的,因为您使用的是console.log()
。并且没有错误消息?如果注释掉解析行,下一个控制台行是否会启动?我没有错误。这是令人困惑的部分…您是否收到任何错误消息?应将JSON.parse包装在try-catch块中,以捕获无效JSON.TL上的错误;博士您的Json无效,请检查它
if (move_uploaded_file($_FILES["files"]["tmp_name"][$position], $target_file)) {
$uploaded[] = array(
'name' => time().".".$imageFileType//,
//'file' => $target_file
);
}