【发布时间】:2012-07-17 09:09:19
【问题描述】:
所以我有这个我已经成功传递给 JS 的 JSON 结构:
{
"StepOne": [
{
"id": "2",
"type": "1",
"description": "How are you feeling?",
"options": [
{
"opt_id": "1",
"opt_desc": "Good"
},
{
"opt_id": "2",
"opt_desc": "Perfect"
},
.... etc
它一直持续到 PageFive,每个步骤的问题数量从 1 到 4 个不等,每个问题的选项从 null 到大约 10 个不等。我想使用这些信息在 Javascript 中生成多步骤表单,但我不知道如何访问内部数据。我只能找到“PageOne”、“PageTwo”等。我正在使用以下代码来执行此操作:
$(document).ready(function()
{
$('#show-results').click(function()
{
$.post('json.php', function(data)
{
var pushedData = jQuery.parseJSON(data);
$.each(pushedData, function(i, serverData)
{
alert(i);
})
})
})
});
现在我已经尝试了这些函数来获取内部值:
var desc = pushedData.PageOne.description;
var desc = pushedData['PageOne']['Description'];
在每个循环中我都尝试过类似的东西
var desc = PageOne.description;
var desc = PageOne['description'];
这一切都以未定义的形式出现。有没有一种方法可以像遍历页面一样遍历每个页面中的每个问题?然后从那里冲洗并重复以迭代每个问题的选项?如果我可以访问每个级别,我应该准备好动态生成投票,这是这里的最终目标。
我认为这段代码有点意思(在我发布后立即发现)。虽然不太好用。
$(document).ready(function()
{
$('#show-results').click(function()
{
$.post('JSAAN.php', function(data)
{
var pushedData = jQuery.parseJSON(data);
$.each(pushedData, function(i, stepData)
{
$.each(stepData, function(j, questionData)
{
// Print question here
$.each(questionData, function(k, optionData)
{
// Print option here
})
})
})
})
})
});
【问题讨论】:
-
您正在尝试访问
PageOne,但您的示例中有StepOne...是这个问题吗? -
您确定 pushData 包含正确的 JavaScript 对象吗?
-
哦,哈哈,对不起@JamesAllardice :)
-
哦,对不起,是的。我更改了示例的变量名称,因为我发现它最常被命名为多步骤而不是多页面。但这不是问题。我的坏
-
@Sllix 抱歉标签放错了 :) 感谢您的纠正。