Переменные формы VueJs не определены для axios api POST - PullRequest
0 голосов
/ 21 июня 2019

Вот JSFiddle, который я создал для вас, чтобы он работал

Я пытаюсь проверить форму Vue.Js, отправив введенные мной значения теста, но получаю ошибку 400, поскольку они не определены

Я работаю в Vue.js около месяца и пытаюсь проверить простую отправку формы

Я настроил простую конечную точку API с ответом, который повторяет то, что я отправляю.

Я проверил это в почтальоне и с жестко закодированной строкой в ​​моем приложении vue.js

Однако, когда я пытаюсь присвоить значения, которые я ввел в форму через переменные, определенные в "data: () =>", я продолжаю получать 400 (ПЛОХОЙ ЗАПРОС), потому что они не определены.

Я установил точки останова в своем коде и прошел через него, и кажется, что я просто не присваиваю значения, которые я ввожу переменным, поэтому при отправке я получаю ошибку 400. Кто-нибудь может, пожалуйста, взглянуть на мой код и предложить, как я должен назначать значения.

                       <v-toolbar color="#004977">
                          <v-btn 
                           v-on:click.native="addJob">
                            Submit
                          </v-btn>
                        </v-toolbar>
            <!-- End Footer -->

                      </div> 
                    </div>
                  </div>
                </v-form> 

              <v-layout>
              </v-layout>




                </v-container>
                </div>
              </div>
            </template>

            <script>

            import Vue from 'vue'
            import { mapActions, mapState, mapGetters } from 'vuex'
            import axios from 'axios';


            export default {

            types: {
                SUBMIT_INTAKE: 'SUBMIT_INTAKE',
                SET_INTAKE_PROPERTY: 'SET_INTAKE_PROPERTY',
                SET_IMPACTED_TEAMS: 'SET_IMPACTED_TEAMS'
            },

              data: () => ({

                  form: {
                    type: null,
                    RequestorName: '',
                    NameOfRequest: '',
                    SelectedPrioritizedInitiative: '',
                    RequestDescription: '',
                    PrimaryIntentTeam: '',
                    CPStrategy: [],
                    CPProductOpsTeams: [],
                    CPTechPods: [],
                    CPExternalTeams: [],
                    BusinessValue: '',
                    TimeCriticality: '',
                    RiskReduction: '',
                  },
                  isSubmitted:false,
                  impactedTeams: [],
                  valid: false,


                  impactedTeams: [],
                  valid: true,
                  formErrors: false,
                  size: "60px",
              }),
              methods: {

                  submit() {
                      if(this.$refs.form.validate()) {
                          this.impactedTeams.forEach((elt)=>{
                              this.form.impactedTeams.push(elt)
                          })
                          this.submitIntake(this.form)
                      } else {
                          this.formErrors = true
                      }
                  },



                 addJob() {
                            let form = {RequestorName: this.RequestorName,
                            NameOfRequest: this.NameOfRequest,
                            SelectedPrioritizedInitiative: this.SelectedPrioritizedInitiative,
                            RequestDescription: this.RequestDescription,
                            PrimaryIntentTeam: this.PrimaryIntentTeam,
                            CPStrategy: this.CPStrategy,
                            CPProductOpsTeams: this.CPProductOpsTeams,
                            CPTechPods: this.CPTechPods,
                            CPExternalTeams: this.CPExternalTeams,
                            BusinessValue: this.BusinessValue,
                            TimeCriticality: this.TimeCriticality,
                            RiskReduction: this.RiskReduction,};

                            const encodeForm = (data) => {

                            return Object.keys(data)

                            .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(data[key]))

                            .join('&');

                            }

                        // make ajax request and pass the data. I'm not certain how to do it with axios but something along the lines of this
                        axios.post('https://rocket-tools-dev.cloud.capitalone.com/api/data/submitCpIntake', 
                        (JSON.stringify(form)))
                            .then(res => {
                          console.log(res)
                          }
                        )
                      .catch(error => {
                      console.log(error)
                      });
                    }


              },



            }
            </script>

Я хочу, чтобы моя кнопка отправки вызывала мой метод addJob, добавила данные из моей формы в мой запрос POST и затем увидела, что эхо возвращает то, что я отправила

1 Ответ

2 голосов
/ 22 июня 2019

Я ПОЛУЧИЛ ЭТО РАБОТАТЬ !!! Большое спасибо всем положительным авторам, которые сосредоточились на моем коде, а не на моих способностях форматирования вопросов

Вот что мне нужно было сделать, чтобы решить мою проблему.

  1. Создайте папку с именем plugins в каталоге ./src


  2. Внутри папки с плагинами создайте axios.js код, который я вставил в axios.js , был


    import axios_http из 'axios'

    // вставьте сюда всю свою логику axios

    export const axios = axios_http

    экспорт по умолчанию { установить (Vue, параметры) { Vue.prototype. $ Axios = axios_http } }


  1. Затем мне пришлось включить плагин axios вверху моего скрипта в мой компонент vue.js после html с этим кодом


    import {axios} из '@ / plugins / axios'


    1. Наконец, я отредактировал свой метод, добавив переменные, включив в них имя объекта перед переменными, как в this.from. (InsertVariableNameHere). Ниже приведу свой метод работы.

    addJob (e) {

                axios.post('https://rocket-tools-dev.cloud.capitalone.com/api/data/submitCpIntake', {
                    RequestorName: this.form.RequestorName,
                NameOfRequest: this.form.NameOfRequest,
                SelectedPrioritizedInitiative: this.form.SelectedPrioritizedInitiative,
                RequestDescription: this.form.RequestDescription,
                PrimaryIntentTeam: this.form.PrimaryIntentTeam,
                CPStrategy: this.form.CPStrategy,
                CPProductOpsTeams: this.form.CPProductOpsTeams,
                CPTechPods: this.form.CPTechPods,
                CPExternalTeams: this.form.CPExternalTeams,
                BusinessValue: this.form.BusinessValue,
                TimeCriticality: this.form.TimeCriticality,
                RiskReduction: this.form.RiskReduction
                })
                .then(function (response) {
                    console.log(response)
                })
                .catch(function (error) {
                    console.log(error)
                });
        }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...