在HTML中设置Javascript数组
我有以下用PHP生成的代码:在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
<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.'">';