Javascript在XMLHttpRequest.onload/Uncought SyntaxError中的JSON.
Javascript stops on JSON.parse(this.responseText) in XMLHttpRequest.onload/Uncaught SyntaxError: Unexpected token
我正试图用codecourse/phpacademy的教程制作一个拖放上传字段,但在尝试了几个小时并弄清楚为什么我没有得到预期的结果后,我第二天就上床尝试了。
两天后,我迷路了。
我正在尝试创建一个div,用户可以在其中放置多个图像,这些图像会立即上传到服务器。服务器响应应该是一个JSON字符串,其中包含一个或多个带有上载文件的名称和路径的数组。然后,这个JSON字符串用于在上传页面上显示文件名。
工作原理:
- 我可以将图像拖放到div上,元素就会改变样式
- 文件已上载
- 我从服务器收到一个JSON字符串
什么不起作用:
- 在dropzonediv上方显示文件名
从外观上看,在JSON.parse接收其内容的那一行,停止我的javascript,而不显示错误消息。EDIT:由于arve0"意外令牌",我收到一个错误,但没有显示令牌。
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);
};
控制台显示:
DING!1
[{"name":"1452525771.jpg","file":"..'/folder_with_images'/1452525771.jpg"}]
this.responseText的类型为字符串
它都位于同一个域上
错误:"意外的令牌",没有显示令牌
我的代码有问题吗?如果是,可能的解决方案是什么?如果没有,我可以用什么来获得我想要的相同结果?
TL;DR:
Javascript在XMLHttpRequest.onload
中的JSON.parse(this.responseText)
上停止
this.responseText的类型为字符串
它都位于同一个域上
错误:"意外的令牌",没有显示令牌
编辑关于Uncaught SyntaxError的重复:JSON.parse 的意外令牌
我已经阅读了给出的答案,但仍然不起作用。
-JSON.parse()
只能接受字符串。
=typeof this.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,我找到了答案。我已经用bom将我的url_to_upload_images.php保存为UTF 8。这将通过返回JSON创建一个不可见的字符。
将其保存为没有BOM的UTF 8文件,它可以工作!
- --Node.js中的和谐标志0.12抛出SyntaxError
- SyntaxError:意外的标记else(我在代码中找不到错误)
- SyntaxError:石头剪刀中的意外标记{
- Javascript在XMLHttpRequest.onload/Uncought SyntaxError中的JSON.
- 使用Javascript Geolocation API,SyntaxError:Chrome中的意外标识符'的
- JavaScript:SyntaxError:missing)-如何正确地转义php中的js
- 未捕获的SyntaxError:firebase中的refCreateUser中出现意外的令牌
- SyntaxError:非法的返回语句-正在url中搜索字符串
- Jquery-Firefox开发工具中的错误消息:'SyntaxError:缺少;在语句'之前;
- index.php:13 Uncaught SyntaxError: Unexpected token: Ci中的错误消
- 未捕获的SyntaxError:意外的token变量;当试图编写一小段代码来比较JavaScript中两个对象的属性时
- SyntaxError: missing;Angular控制器中的before语句
- SyntaxError: missing;Javascript中的before语句
- SyntaxError:带有for的意外标识符.nodejs中的Of循环
- SyntaxError: missing;HTML选择标记中的Before语句
- 未捕获的SyntaxError:意外的令牌&在React中渲染客户端
- 未捕获的SyntaxError:剑道ui网格中的意外数字
- SyntaxError: angular js指令中的意外token{
- json解析器中的SyntaxError
- 未捕获的SyntaxError:“”中意外的令牌导入;主干网无线电.js”;