解析json报错:caught SyntaxError: Unexpected identifier 'id',哪位大神知道为啥?

如题所述

第1个回答  2023-05-08
关于您遇到的 "Unexpected identifier 'id'" 错误,这可能是由于代码中 eval() 函数的使用导致的。建议您使用 JSON.parse() 函数来解析 JSON 数据,而不是使用 eval(),因为 eval() 可能会导致安全问题和错误。
请尝试修复这些问题,并使用以下代码:
// 允许上传的文件格式
$typeArr = array("jpg", "png", "gif", "jpeg", "mov", "mp4", "gears", "html", "silverlight", "flash", "pdf", "docx", "doc");
// 视频存储路径
$path = "resource/photo/photo";
if (isset($_POST)) {
$name = $_FILES['file']['name'];
$size = $_FILES['file']['size'];
$name_tmp = $_FILES['file']['tmp_name'];
if (empty($name)) {
echo json_encode(array("error" => "您还未选择文件"));
exit;
}
$type = strtolower(substr(strrchr($name, '.'), 1)); // 获取文件类型
if (!in_array($type, $typeArr)) {
echo json_encode(array("error" => "请上传指定类型的文件!", "type" => "types"));
exit;
}
if ($size > (1 * 1024 * 1024 * 1024)) { // 上传大小
echo json_encode(array("error" => "文件大小已超过1GB!", "type" => "size"));
exit;
}
$pic_name = time() . rand(10000, 99999) . "." . $type; // 文件名称
$pic_url = $path . $pic_name; // 上传后图片路径+名称
if (move_uploaded_file($name_tmp, $pic_url)) { // 临时文件转移到目标文件夹
echo json_encode(array("error" => "0", "pic" => $pic_url, "name" => $pic_name));
} else {
echo json_encode(array("error" => "上传有误,请检查服务器配置!", "type" => "config"));
}
}
在 JavaScript 代码中,使用 JSON.parse() 替换 eval():
var data = JSON.parse(info.response);
…………
回复:
这个错误提示表明 JSON 数据在解析时遇到了意外的非空白字符。这可能意味着 JSON 数据格式有问题,或者在生成 JSON 数据时引入了意外的字符。
首先,您需要检查服务器端返回的 JSON 数据是否格式正确。您可以在服务器端脚本的输出部分添加一些调试代码,以检查生成的 JSON 数据是否正确。例如,在 PHP 代码中的 json_encode 之前,您可以使用 var_dump 打印数据:
// 示例
$data = array("error" => "0", "pic" => $pic_url, "name" => $pic_name);
var_dump($data);
echo json_encode($data);

然后,在浏览器中检查网络请求响应,以确保 JSON 数据没有格式问题。
如果服务器端返回的 JSON 数据正确,但在客户端仍然出现错误,那么可能是其他地方的 JavaScript 代码导致的问题。检查 FileUploaded 函数中的其他代码,确保没有意外地修改 info.response。您还可以在调用 JSON.parse() 之前输出 info.response,以检查数据是否已被意外修改:
console.log(info.response);
var data = JSON.parse(info.response);