【发布时间】:2026-01-04 12:40:02
【问题描述】:
我知道有很多这样的问题,但没有一个与我遇到的问题相匹配。
我正在尝试解析从我的 php 传递的 JSON 数组,我可以访问 JSON 数组,但只能在顶层访问。之后我得到一个未定义的错误。
调查数据 JSON
{test: "{"title":"test","data":{"questions":{"test":{"name":"test","type":"text","options":",,"}}}}", The New Survey: "{"title":"The New Survey","data":{"questions":{"te…":{"name":"test","type":"text","options":",,"}}}}"}
这是我的 JS 代码
var survey_data = <?php echo json_encode($survey_data); ?>;
$(document).on( "click", ".view", function() {
var survey_name = $(this).closest('tr').find(".quest-name-list").text();
console.log(survey_data[survey_name]['title']);
});
如果我运行 console.log(survey_data[survey_name]); 我会得到 JSON
{"title":"test","data":{"questions":{"test":{"name":"test","type":"text","options":",,"}}}}
但是上面的console.log(survey_data[survey_name]['title']);返回未定义
如果我运行下面的代码,虽然它可以工作
var json = {"title":"test","data":{"questions":{"test":{"name":"test","type":"text","options":",,"}}}};
console.log(survey_data[survey_name]['title']);
这将返回所需的 JSON 字段,但我不知道为什么。
感谢任何帮助!
编辑:感谢所有帮助我解决问题的人,这是问题并修复。
在我的 php 代码中,我有
$survey_data = [];
foreach ($surveys as $survey) {
$survey_fi = $survey['survey_fields'];
$survey_data[ $survey_f['title']] = imap_base64($survey_fi);
}
但是我添加到数组中的字段($survey_fi) 已经是 JSON,所以我需要先解码 JSON,然后在我的 JS 代码中添加将转换回 JSON 的数组。
这就是解决办法
$survey_data = [];
foreach ($surveys as $survey) {
$survey_fi = $survey['survey_fields'];
$survey_f = json_decode(imap_base64($survey_fi), true);
$survey_data[ $survey_f['title']] = $survey_f;
}
【问题讨论】:
-
如果没有更多的上下文,任何人都很难提供帮助。您发布的代码本身就可以正常工作。
-
survey_data的完整内容是什么? -
@PatrickQ 我已经编辑了我的答案以包含survey_data的内容
-
@Top-Bot 您添加到问题中的 json 看起来无效
-
是的,那是不是 JSON
标签: javascript php jquery arrays json