我正在从db获取记录,并为每一行创建一个数组,并使用json_encode()
对其进行编码。
现在,我的数据返回如下:[{"slug":"bitcoin","change7d":"-3.87"}][{"slug":"maker","change7d":"-8.58"}]
。
当我尝试解析ajax调用中的数据时,console.log()
返回错误SyntaxError: Unexpected token [ in JSON at position 39
。这是我的代码:
在我的php文件中:
foreach($result as $row){
$data[] = $row;
}
print json_encode($data);
在我的js文件中:
var newData = JSON.parse(result);
如果我稍稍更改查询并获得一条记录,那么解析数据就没有麻烦了。
答案 0 :(得分:0)
JSON.parse解析单个有效的JS对象({}结构或数组)。因此,在您的情况下,解决方案要么从数据库中逐个数组获取并逐一解析它们,要么尝试将它们转换为从数据库获得的文本级别的一个大数组数组。为此,您需要用方括号将数组括起来,并在它们之间放置逗号。
在您的情况下,它将如下所示:
[
[{"slug":"bitcoin","change7d":"-3.87"}],
[{"slug":"maker","change7d":"-8.58"}]
]
答案 1 :(得分:0)
您正在解析的JSON无效。您应该返回一个对象数组以正确地解析数据,而不是两个数组。例如:
@{
Html.ViewData.TemplateInfo.HtmlFieldPrefix = "Contact";
}
@await Html.PartialAsync("_YourPartialViewName", Model.Contact)
答案 2 :(得分:0)
您应该创建一个包含记录的单个数组,只需尝试
print json_encode($result)
在您的PHP文件中
答案 3 :(得分:0)
经过大量研究,我设法做到了这一点:
var old = JSON.stringify(result).replace(/\]\[/g, ",");
var newData = JSON.parse(old);
console.log(newData);
它将所有出现的'] ['替换为'',因此将响应数据转换为有效JSON。
它给出了预期的结果。