Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript在XMLHttpRequest.onload/Uncaught SyntaxError中的JSON.parse(this.responseText)上停止:意外标记_Javascript_Json - Fatal编程技术网

Javascript在XMLHttpRequest.onload/Uncaught SyntaxError中的JSON.parse(this.responseText)上停止:意外标记

Javascript在XMLHttpRequest.onload/Uncaught SyntaxError中的JSON.parse(this.responseText)上停止:意外标记,javascript,json,Javascript,Json,我正在尝试用一个拖拽上传字段,但是经过几个小时的尝试和思考,为什么我没有得到我所期望的,第二天我就上床去尝试了 两天后,我迷路了 我正在尝试创建一个div,用户可以在其中放置多个图像,这些图像将立即上载到服务器。服务器响应应该是一个JSON字符串,包含一个或多个数组,其中包含上传文件的名称和路径。然后,该JSON字符串用于在上载页面上显示文件名 工作原理: 我可以将图像拖放到div上,元素会改变样式 文件已上载 我正在从服务器接收一个JSON字符串 什么不起作用: 在dropzone di

我正在尝试用一个拖拽上传字段,但是经过几个小时的尝试和思考,为什么我没有得到我所期望的,第二天我就上床去尝试了

两天后,我迷路了

我正在尝试创建一个div,用户可以在其中放置多个图像,这些图像将立即上载到服务器。服务器响应应该是一个JSON字符串,包含一个或多个数组,其中包含上传文件的名称和路径。然后,该JSON字符串用于在上载页面上显示文件名

工作原理:

  • 我可以将图像拖放到div上,元素会改变样式
  • 文件已上载
  • 我正在从服务器接收一个JSON字符串
什么不起作用:

  • 在dropzone div上方显示文件名
从外观上看,在JSON.parse接收其内容的那一行停止我的javascript而不显示错误消息。 编辑:由于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);
};
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
    );
}