通过HTML表单将javascript数组传递给另一个js文件

通过HTML表单将javascript数组传递给另一个js文件,javascript,html,node.js,forms,associative-array,Javascript,Html,Node.js,Forms,Associative Array,我的html中有这个javascript代码 answers.push({ answer:$('#answer_1').val(), correctAnswer:$('#choice_1').is(":checked") }); questions.push({ questionNumber:1, questionType:questionType, questionText:questionText, answers:answers });

我的html中有这个javascript代码

answers.push({
    answer:$('#answer_1').val(),
    correctAnswer:$('#choice_1').is(":checked")
});
questions.push({
    questionNumber:1,
    questionType:questionType, 
    questionText:questionText,
    answers:answers
}); 
$('.hiddenField').val(JSON.stringify(questions));    
如你所见,我在问题数组中有答案数组。我想将这个问题数组传递给服务器端javascript文件。我试图在HTML表单的POST方法中使用一个隐藏的输入,如下所示

<form action="/new" method="POST">
<div class = "quiz_basic">
<input type = "hidden" class = "hiddenField" name = "questions" />
</div> </form>
如果我从questions数组中删除answers数组对象并通过HTMLPOST方法仅传递该对象,我就能够毫无问题地解析它。我应该如何通过HTML发送一个包含另一个数组作为其元素之一作为一个对象的数组?你们能帮帮我吗

json看起来像这样

[{"questionNumber":1,"questionType":"radio","questionText":"Whats your name","answers":[{"answer":"Peter","correctAnswer":true},{"answer":"Dave","correctAnswer":false},{"answer":"Adam","correctAnswer":false},{"answer":"Steve","correctAnswer":false}]}]
如上所述,如果我删除“answers”数组并发送它,它不会在服务器端抛出错误


谢谢

当您解析它时,您拥有有效的JSON字符串
var questions=JSON.parse(req.body.questions)
您可以获得对象的
数组
——到目前为止我们做得很好(嵌套的
数组
没有问题)

当您尝试解析
var answers=JSON.parse(req.body.questions.answers)时,第一个问题就开始了
req.body.questions
此时是一个
字符串,无法访问属性
。答案
。解决方案:不要第二次解析,让我们使用已经解析的
var-questions

第二个问题是
.answers
不属于
var answers
,因为它是
数组。它是数组元素的属性。解决方案:让我们取第一个数组元素
var answers=questions[0]

尝试这样做:

router.post('/new', function(req, res, next){
    var questions = JSON.parse(req.body.questions);
    console.log('Question array is ', questions);
    var answers = questions[0].answers;
    console.log('Answer array is ', answers);
  res.send('success');
}

这修复了解析问题,但不确定初始JSON结构是否正确。。如果“问题”数组中有多个问题,您是否打算一次发布所有问题?如果是,则应该涉及某种循环,以便访问正确的答案(
var answers=questions[0]。答案
=>
questions[i]。答案

解析时,您拥有有效的JSON字符串
var questions=JSON.parse(req.body.questions)
您可以获得对象的
数组
——到目前为止我们做得很好(嵌套的
数组
没有问题)

当您尝试解析
var answers=JSON.parse(req.body.questions.answers)时,第一个问题就开始了
req.body.questions
此时是一个
字符串,无法访问属性
。答案
。解决方案:不要第二次解析,让我们使用已经解析的
var-questions

第二个问题是
.answers
不属于
var answers
,因为它是
数组。它是数组元素的属性。解决方案:让我们取第一个数组元素
var answers=questions[0]

尝试这样做:

router.post('/new', function(req, res, next){
    var questions = JSON.parse(req.body.questions);
    console.log('Question array is ', questions);
    var answers = questions[0].answers;
    console.log('Answer array is ', answers);
  res.send('success');
}

这修复了解析问题,但不确定初始JSON结构是否正确。。如果“问题”数组中有多个问题,您是否打算一次发布所有问题?如果是,则应涉及某种循环,以便访问正确的答案(
var answers=questions[0]。答案
=>
questions[i]。答案

请修复HMTL格式:
您可以编写完整的错误堆栈跟踪吗?您可以通过AJAX(XmlHttpRequest)向服务器提交JS数组和对象。有很多方便的包装,例如在jQuery中。你能发布关于json看起来怎么样的问题吗?编辑了我的文章,提供了更多细节。添加了questions.json格式的htmlPlease修复您的HMTL格式:
您可以编写完整的错误堆栈跟踪吗?您可以通过AJAX(XmlHttpRequest)向服务器提交JS数组和对象。有很多方便的包装,例如在jQuery中。你能发布关于json看起来怎么样的问题吗?编辑了我的文章,提供了更多细节。添加了questions.json,格式为htmlYes,先生。非常感谢你。关于我的json,你是对的。我会有不止一个问题,所有问题都会立即提交。我使用Mongo db来保存这些问题,我循环使用问题数组长度,并能够将其与相应的答案数组一起保存。像这样,如果我遗漏了什么,或者您对如何更好地完成它有任何意见,请告诉我。var questions=JSON.parse(req.body.questions);对于(i=0;i