質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5397閲覧

Vueでaxiosを使った送信が出来ない

tenlife

総合スコア70

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/02/23 01:53

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーメッセージにあるとおり、axios.post(...).themの部分が誤っています。
axios.postはPromiseを返すので、正しくは、axios.post(...).thenだと思います。

https://github.com/axios/axios#example

投稿2020/02/23 01:59

shgtkshruch

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tenlife

2020/02/23 20:44

ありがとうございます。エラーをもう少し確認するべきでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問