gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:11 24 4
gpt4 key购买 nike

我的 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>

在服务器端 js 文件中,当我尝试使用 req.body.questions 参数访问它时,我收到“意外的 token u”错误。这是我的服务器端代码。我正在使用nodejs框架。

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

如果我从问题数组中删除答案数组对象并仅通过 HTML POST 方法传递该对象,我就可以毫无问题地解析它。我应该如何通过 HTML 发送一个数组,该数组将另一个数组作为其元素之一作为一个对象发送?你们能帮我一下吗?

questions.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); 你会得到对象的 Array - 到目前为止我们都很好(嵌套 Array 没有问题)。

当您尝试解析 varanswers = JSON.parse(req.body.questions.answers); 时,第一个问题开始出现。此时,req.body.questions 是一个String,并且无法访问属性.answers。解决方案:不要解析第二次,让我们使用已经解析过的 var questions

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

尝试这样做:

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 结构是否正确。如果“questions”数组中有多个问题怎么办,您打算一次将它们全部发布吗?如果是,则应该涉及某种循环,以便获得正确的答案 (varanswers = questions[0].answers => questions[i].answers)

关于javascript - 通过 HTML 表单将 javascript 数组传递到另一个 js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com