javascript - 如何在 VueJS 中调度数组
问题描述
我无法将一组数据发送到后端。我尝试添加[]
到调度变量和后端,但它只给了我传递给后端的最后一个数据。我的目标是match each data to another table with multiple data that is the exactly identical to each other
。顺便说一句,我使用了一个多选表来获取多个数据。我用 push 替换了等号,但现在我的错误是Cannot read property 'push' of undefined
. 现在可能是因为后端,但我不知道如何将数组检索到后端。
前端
<script>
data(){
return {
gatheredData: {
answerId: [],
studentAccessId: [],
testItemId: [],
answer: [],
},
}
},
methods:{
getChecked(selected3) {
for (var s = 0; s < selected3.length; s++) {
this.gatheredData.studentAccessId.push(selected3[s].studentAccessId);
this.gatheredData.testItemId.push(selected3[s].testItemId);
this.gatheredData.studentanswer.push(selected3[s].studentanswer);
this.$store
.dispatch("SUBMIT_SCORE", {
total: this.selected3.length,
token2: this.token,
studentAccessId2: this.gatheredData.studentAccessId,
testItemId2: this.gatheredData.testItemId,
studentanswer2: this.gatheredData.studentanswer,
})
}
},
</script>
index.js(商店)
SUBMIT_SCORE ({ commit }, payload) {
console.log(payload.studentAccessId)
return new Promise((resolve, reject) => {
axios
.post('http://localhost/MyComposer/', payload, {
params: {
submitId: 14
}
})
.then(response => {
console.log(response.data)
resolve(response)
})
.catch(error => {
reject(error)
})
})
},
后端
<?php
if (isset($_GET['submitId']) && $_GET['submitId'] == 14) {
$scoreData = file_get_contents('php://input');
$decodedScoreData = json_decode($scoreData);
$total = $decodedScoreData->{'total'};
// $answerId = $decodedScoreData->{'answerId'};
$testItemId = $decodedScoreData->{'testItemId'};
$token = $decodedScoreData->{'token'};
$studentAccessId = $decodedScoreData->{'studentAccessId'};
$studentanswer = $decodedScoreData->{'studentanswer'};
$db->where('AccessId', $token);
$db->where('StudentAccessId', $studentAccessId);
$db->where('TestItemId', $testItemId);
$getStudentAnswers = $db->get('answertable');
$flag = 0;
foreach ($getStudentAnswers as $gsa) {
if ($gsa['StudentAnswer'] === $studentanswer && $gsa['StudentAccessId'] === $studentAccessId && $gsa['TestItemId'] === $testItemId) {
$flag = 1;
} else {
$flag = 2;
}
}
$updateFlag = array(
'Flag' => $flag,
);
$newFlag = $db->update('answertable', $updateFlag);
if ($newFlag) {
echo json_encode($newFlag);
}
?>
解决方案
(this.gatheredData.studentAccessId) 此字段在您的代码中看起来不像数组类型。当它循环时,最后一个将被分配。
请参阅下文。
gatheredData {
studentAccessId: []
...
}
....
loop {
this.gatheredData.studentAccessId.push();
}
或者我认为您可以使用 selected3 参数,因为它似乎已经是数组类型。
推荐阅读
- delphi - 将 TByteDynArray 转换为字符串
- java - java循环链表交换对head不起作用
- bash - Bash 运行程序/脚本并读取输出并采取相应措施
- wpf - Jetbrains Rider WPF 设计时间数据
- android - Android Studio - 服务器证书过期抛出“错误:原因:无法找到请求目标的有效证书路径”
- php - 打包 PHP Composer 依赖项,例如 webpack
- javascript - 如何在不使用道具的情况下将一个类上的 ref 函数传递给另一个类?可能吗?(反应原生)
- hadoop - 在 MapR 集群之间切换
- haskell - 类型构造函数柯里化?(尝试创建一个数据构造函数,从另一个接受两种类型的数据构造函数中接受一种类型)
- python - 排序列表(自己定义的值,其他值)