axiosを使用してデータの送信を行いたいのですが、下記のエラーが出てしまいます。
Error in v-on handler: "TypeError: axios.post(...).them is not a function"
下記のサイトなどを見てみましたが、解決できませんでした。
https://stackoverflow.com/questions/57283630/vue-warn-error-in-v-on-handler-typeerror-cannot-read-property-fire-of-un
app.js
1import axios from 'axios' 2import VueAxios from 'vue-axios' 3 4Vue.use(VueAxios, axios) 5 6new Vue({ 7 el: '#app', 8 data: { 9 name: '', 10 email: '', 11 subjectId: '', 12 text: '', 13 subjects: { 14 1: '商品に関するご質問', 15 2: 'お支払に関するご質問', 16 3: 'ショッピングに関するご質問', 17 4: 'ご質問・その他', 18 } 19 } 20});
Contact.vue
1<template> 2 <div class="uk-card uk-card-default uk-card-body uk-width-1-2@m"> 3 <h3 class="uk-card-title">お問い合わせ</h3> 4 <form v-if="!emailSent"> 5 <p v-if="errors.length"> 6 <b class="kakuninn">入力内容に不備があります。下記を確認してください</b> 7 <ul> 8 <li class="mini" v-for="error in errors">{{ error }}</li> 9 </ul> 10 </p> 11 <label>名前 12 <input type="text" v-model="name"> 13 <div class="error_txt" v-html="errors.name"></div> 14 </label> 15 <label>メールアドレス 16 <input type="text" v-model="email"> 17 <div class="error_txt" v-html="errors.email"></div> 18 </label> 19 <label>用件 20 <select v-model="subjectId"> 21 <div class="error_txt" v-html="errors.subjectId"></div> 22 <option value=""></option> 23 <option v-for="(subject, id) in subjects" :value="id" v-text="subject"></option> 24 </select> 25 </label> 26 <label>お問い合わせ内容 27 <textarea class="text" rows="10" placeholder="お問い合わせの内容をご入力ください。" v-model="text"></textarea> 28 <div class="error_txt" v-html="errors.text"></div> 29 </label> 30 <button class="uk-button uk-button-primary uk-width-1-1 uk-margin-small-bottom" type="button" v-on:click="checkForm">送信する</button> 31 </form> 32 <div v-if="emailSent">メッセージが送信されました。ありがとうございました。</div> 33 </div> 34</template> 35 36<script> 37 38export default { 39 data: function(){ 40 return { 41 name: '', 42 email: '', 43 subjectId: '', 44 text: '', 45 subjects: { 46 '1' : '商品に関するご質問', 47 '2' : 'お支払に関するご質問', 48 '3' : 'ショッピングに関するご質問', 49 '4' : 'ご質問・その他', 50 }, 51 errors: {}, 52 emailSent: false 53 } 54 }, 55 56methods: { 57 58 checkForm: function(e) { 59 this.errors = []; 60 console.log(e) 61 if(!this.name){ 62 this.errors.push("名前は必須です"); 63 } 64 if(!this.email){ 65 this.errors.push("メールアドレスは必須です") 66 } 67 68 69 if(!this.subjectId){ 70 this.errors.push("用件を入力してください"); 71 } 72 if(!this.text){ 73 this.errors.push("お問い合わせの内容を入力してください"); 74 } 75 e.preventDefault(); 76 77 var params = { 78 name: this.name, 79 email: this.email, 80 subject: this.subject, 81 text: this.text 82 } 83 84 var self = this; 85 86 axios.post('/contact', params) 87 .them(function(response){ 88 console.log(response) 89 // self.emailSent = true 90 }) 91 .catch(function(error){ 92 console.log(error.response) 93 // var errors = {}; 94 95 // for(var key in error.response.data.errors) { 96 // errors[key] = error.response.data.errors[key].join('<br>'); 97 // } 98 // self.errors = errors; 99 }); 100 },
ContactController
1public function send(ContactRequest $request) 2 { 3 $subjects = [ 4 '1' => '商品に関するご質問', 5 '2' => 'お支払に関するご質問', 6 '3' => 'ショッピングに関するご質問', 7 '4' => 'ご質問・その他', 8 ]; 9 10 $params = [ 11 'name' => $request->name, 12 'email' => $request->email, 13 'subjectId' => $request->subjectId, 14 'text' => $request->text, 15 'subject' => $subjects[$request->subjectId] 16 ]; 17 // eval(\Psy\sh()); 18 \Mail::to('test@.com')->send(new Contacted($params)); 19 }
web.php
1Route::get('/contact', 'ContactController@input'); 2Route::post('/contact', 'ContactController@send');
自分だけでは原因を見つけることができませんでした。
どなたかご教授お願いします。
php 7.4
laravel 6.0
vue@2.6.11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/23 20:44