首页 > 解决方案 > 如何在 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);
            }
?>

标签: javascriptphpvue.js

解决方案


(this.gatheredData.studentAccessId) 此字段在您的代码中看起来不像数组类型。当它循环时,最后一个将被分配。

请参阅下文。

gatheredData {
  studentAccessId: []
  ...
 }
 
 ....
 loop {
   this.gatheredData.studentAccessId.push();
 }

或者我认为您可以使用 selected3 参数,因为它似乎已经是数组类型。


推荐阅读