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

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

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

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

Laravel

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

2002閲覧

単vueコンポネートから コントローラーにデータを渡し(ajaxで)画面遷移させたいです。

soroban2000

総合スコア13

Vue.js

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

Laravel

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2021/03/19 07:48

やりたいこと

現在、ポートフォリをとして単語帳共有アプリをlaravelで作成しています。

単語帳演習(solve.blade.php)のvueコンポネートからリザルト(result.blade.php)にajaxでデータを渡し遷移させたいです。エラーなどは表示されておらず。resultのviewまでデータを渡すせている部分まで確認済みです。残りは、resultの画面に遷移させたいのですが、どこに何を記述したら良いのかわからなくなってしまいました。(あまり参考サイトがない)

現状の写真
イメージ説明

わかりづらい説明で申し訳ありませんがわかる方いましたら教えたください。

ajax送信するvueコンポーネント

vue

1$.ajax({ 2 headers: { 3 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 4 }, 5 type: 'POST', 6 url: '/articles/result/' + this.id + '/' + this.isEnglishToJapanese, 7 addType: 'json', 8 data: { 9 id: this.id, 10 numberOfQuestions: this.numberOfQuestions, 11 wordList: JSON.stringify(this.wordList), 12 corrects: JSON.stringify(this.corrects), 13 }, 14 async: false, 15 cache: false, 16 success: function(result){ 17 console.debug("result" + result); 18 }, 19 error: function(jqxhr, status, exception) { 20 console.debug('jqxhr', jqxhr); 21 console.debug('status', status); 22 console.debug('exception', exception); 23 } 24 }).done(function (results) { 25 alert('done!'); 26 }).fail(function (jqXHR, textStatus, errorThrown) { 27 alert('eroor!'); 28 console.log(jqXHR); 29 console.log(textStatus); 30 console.log(errorThrown); 31 });

web.php

php

1Route::post('/articles/result/{article}/{isEnglishToJapanese}', 'ArticleController@result')->name('articles.result');

コントローラー

php

1public function result(Request $request) 2 { 3 $id = filter_input(INPUT_POST,"id"); 4 $numberOfQuestions = filter_input(INPUT_POST,"numberOfQuestions"); 5 $corrects = filter_input(INPUT_POST,"corrects"); 6 $corrects = json_decode($corrects); 7 $wordList = filter_input(INPUT_POST,"wordList"); 8 $wordList = json_decode($wordList); 9 return view('articles.result',[ 10 'id' => $id, 11 'numberOfQuestions' => $numberOfQuestions, 12 'corrects' => $corrects, 13 'wordList' => $wordList, 14 'isEnglishToJapanese' => $request->isEnglishToJapanese, 15 ]); 16 } 17

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

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

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

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

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

guest

回答2

0

自己解決

今回、自分が行たかった内容は、post送信であるため、form(hidden)を作り、submit関数で送る必要がありますが、get送信であれば、mikkameさんのようなやり方(location.href)で処理するのが良いかと思いました。(コントローラーに値を渡し、画面遷移できます)

↓参考までに

vue

1<form v-bind:action="url" method="post" name="result"> 2 <input type="hidden" name="_token" v-bind:value="csrf"> 3 <div v-for="n in numberOfQuestions" :key="n"> 4 <input type="hidden" name="word_id[]" :value="wordList[n-1].id"> 5 <input type="hidden" name="ja[]" :value="wordList[n-1].ja"> 6 <input type="hidden" name="en[]" :value="wordList[n-1].en"> 7 <input type="hidden" name="corrects[]" :value="corrects[n-1]"> 8 </div> 9 </form>

投稿2021/03/20 04:39

編集2021/03/20 04:40
soroban2000

総合スコア13

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

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

mikkame

2021/03/20 05:43

送信だけであればajaxでもpost送信できますよ
guest

0

alert('done')
付近にlocation.href = '異動先URL' で移動できます。
vue-routerを使っている場合は、router.pushで移動してください

投稿2021/03/19 08:28

mikkame

総合スコア5036

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

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

soroban2000

2021/03/20 01:54 編集

mikkameさん返信遅くなり大変申し訳ありません。 そして、ご回答いただきありがとうございました。 別のコミュニティでこの質問をしたところ、ajaxでは、formのようにデータを渡して、その画面に遷移できないという話を聞いたのですがこちらは、本当なのでしょうか?ajaxの場合は、データを渡して、コントローラーの処理をする→リダイレクト?(location.heref)のようなものをするので、コントローラーの値を使用し画面遷移できないという認識であっていますでしょうか?
mikkame

2021/03/20 05:42

コントローラーから遷移先のurl返してそれにhref書き換えで飛ばせばいいのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問