在HTML中设置Javascript数组

在HTML中设置Javascript数组,javascript,jquery,Javascript,Jquery,我有以下用PHP生成的代码: <div id='container1' data-history="[["test", "test title", "", []]]"> 我希望可以在javascript中访问它,但当我使用console.loghistory[0]时,它会输出“[”,因此它会将数组视为字符串 有没有一种方法可以让javascript将其作为数组读取 我的PHP代码如下所示:我删除了斜杠和数组的周围 echo '<div id="container1" data

我有以下用PHP生成的代码:

<div id='container1' data-history="[["test", "test title", "", []]]">
我希望可以在javascript中访问它,但当我使用console.loghistory[0]时,它会输出“[”,因此它会将数组视为字符串

有没有一种方法可以让javascript将其作为数组读取

我的PHP代码如下所示:我删除了斜杠和数组的周围

echo '<div id="container1" data-history=[[0]["test", "test title", "", []]] data-current-url="'.$url.'">';

此数据不是有效的JSON字符串。您可以在此处进行检查:

在PHP中,使用json_encore$table;将数组编码为有效的json字符串,并将其放入HTML属性中

然后在JS中使用JSON.parsehistory来获取相应的JSON对象

编辑: 将yout php更改为:

echo '<div id="container1" data-history="[\"test\", \"test title\", \"\"]" data-current-url="'.$url.'">';
并使用我提供的JS代码。

如果从中删除\个字符并在第一个数组元素后添加一个,那么它将是有效的JSON,并且可以通过JSON.parse传递它


除了要删除的转义字符外,以下字符串不是常规JSON:

[[0]["test", "test title", "", []]]
所以最终它不会被JSON.parse解析。 也许你需要填写以下表格:

[[0, "test", "test title", "", []]]
通过JSON.parse正确解析的:

编辑

对于多维数组,有几种可能性:

使用元素的自然位置:

var dataHistory = [
  ["test", "test title", "", []]    //this is the 0 element
];
var myZeroElement = dataHistory[0];
使用键、值结构:

var dataHistory = [
  {'key':'0', 'value': ["test", "test title", "", []]}
];
var myZeroElement = dataHistory[0].value;

由于javascript和php都有相同的两种类型的引号来分隔字符串,因此需要对其中一些引号进行转义:

echo '<div id="container1" data-history=\'[[0],["test", "test title", "", []]]\' data-current-url="'.$url.'">';

你是如何从php中为数据历史属性值执行echo的?是的,我使用的是PHPecho的echo很好,但是你是如何为数组执行echo的?请提供php codecheck dis,因为你需要使数组成为有效的json,我更新了数组位,但现在它给了我:SyntaxError:json.parse:unexpected关键字OK我这样做了,它给了我这个e错误:SyntaxError:JSON.parse:数据意外结束。我的新代码:数据历史=[[0][test,test title,[]]您已经从属性值周围删除了“字符”。请不要这样做。包含空格的属性值必须被引用。嗯,您在第一个数组元素后也缺少逗号。这意味着它是一个多维数组,其中索引0包含“[test,test title,[]”“我已将其更改为您的第一个建议,但它给了我以下错误:SyntaxError:JSON.parse:unexpected关键字请发布用于获取数据历史记录属性值并对其进行解析的代码。我一开始就有,但根据答案显然无效。哦,是的,缺少逗号
var dataHistory = [
  ["test", "test title", "", []]    //this is the 0 element
];
var myZeroElement = dataHistory[0];
var dataHistory = [
  {'key':'0', 'value': ["test", "test title", "", []]}
];
var myZeroElement = dataHistory[0].value;
echo '<div id="container1" data-history=\'[[0],["test", "test title", "", []]]\' data-current-url="'.$url.'">';