\r\n-----------------------------------------------------------------------------\r\n
\r\n \r\n \r\n
\r\n-----------------------------------------------------------------------------\r\n```","answerCount":2,"upvoteCount":0,"datePublished":"2015-06-17T07:43:19.021Z","dateModified":"2015-06-17T08:58:32.787Z","acceptedAnswer":{"@type":"Answer","text":"```lang-<php>\r\n// Log::debug( $_POST );\r\n// Log::debug( $_GET );\r\nreturn Response::json( array( 'data' => $_POST ) );\r\n```\r\n上記でやると、ajaxの戻り値で返ってくると思うのですが、\r\n(実際にlaravel上で、ajaxやってるところから出しました)\r\n\r\nあと、可能性として気になるところがちらほらあるので箇条書きで記載します。\r\n\r\n・var dataString = form.serialize();\r\n ここで、シリアライズして送信する事を想定していると思いますが、\r\n typeは、POSTで送信されているので、dataの_tokenがちゃんと到達(認識?)出来ていないのではないかと思います。\r\n\r\n```lang-<javascript>\r\nvar dataString = {};\r\ndataString['_token'] = $('meta[name=\"csrf-token\"]').attr('content');\r\n\r\n~~~\r\n```\r\n上記の様に送信値はオブジェクトに入れてセットしないと_tokenが取れないんじゃないですかね?\r\n(_tokenのセット部分は、自分のソース抜き出しただけなので、動かなければそちらの実装に即した形に書き換えてください)\r\n\r\n・$_GETには何も入らないのでは?\r\n ajax のtypeがPOSTで送られているので、$_GETには何も入らないのではないかと思います。\r\n dumpするなら\r\n```lang-\r\nreturn Response::json( array( 'data' => Input::all() ) );\r\n```\r\nとかでアクセスしてみるといいかと。\r\n\r\nこれぐらいですかね。\r\n\r\nせめて、\r\n・コードの結果からどうなる事を期待しているのか?\r\n・何をもってして情報が引き渡されていないのか?判断したのか?\r\n・ajax以外の方法(例えば単純なPOST送信等)は上手くいっているのか?\r\n\r\n上記を記載すると、より回答しやすくなると思います。","dateModified":"2015-06-17T16:16:02.746Z","datePublished":"2015-06-17T16:16:02.746Z","upvoteCount":1,"url":"https://teratail.com/questions/11441#reply-16953"},"suggestedAnswer":[{"@type":"Answer","text":"Laravelは使ったことないですが・・・\r\nRoute::anyでは/testなのに、ajaxで指定しているのは/uploadなので\r\nそもそもリクエスト先を間違えていませんか?","dateModified":"2015-06-17T08:03:30.381Z","datePublished":"2015-06-17T08:03:30.381Z","upvoteCount":0,"url":"https://teratail.com/questions/11441#reply-16905","comment":[{"@type":"Comment","text":"変更してみましたが、ダメでした...","datePublished":"2015-06-17T08:57:33.548Z","dateModified":"2015-06-17T08:57:33.548Z"},{"@type":"Comment","text":"chromeのデベロッパーツールなどで\r\najaxがアクセスしているアドレスを確認したり\r\nRoute::any側でLog::debugではなく\r\nprintにして同じくデベロッパーツールで\r\nresponseを確認してみたらどうでしょうか?","datePublished":"2015-06-17T11:25:38.722Z","dateModified":"2015-06-17T11:25:38.722Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"PHPに関する質問","url":"https://teratail.com/tags/PHP"},{"@type":"ListItem","position":3,"name":"PHP","url":"https://teratail.com/tags/PHP"}]}}}
質問するログイン新規登録
PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

4810閲覧

Laravel5でAjaxを使用

amutas

総合スコア12

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2015/06/17 07:43

編集2015/06/17 08:58

0

0

LaravelにてAjaxの値の受け取りができません。
どうか皆様の知恵をお貸し下さい。

routes.php

lang

1Route::any("/test", function (){ 2 Log::debug( $_POST ); 3 Log::debug( $_GET ); 4 } 5);

view/upload.php

lang

1-------------------ヘッダー-------------------------- 2<meta name="csrf-token" content="" /> 3-------------------スクリプト------------------------------- 4<script> 5$('#ajax').submit(function(e){ 6 e.preventDefault(); 7 alert('ajax送信'); 8 var form = jQuery(this).parents("form:first"); 9 var dataString = form.serialize(); 10 var formAction = form.attr('action'); 11 12 $.ajax({ 13 type: "POST", 14 url : formAction, 15 data : dataString, 16 success : function(data){ 17 alert("Testing ajax forms: " + data); 18 } 19 },"json"); 20 21}); 22}); 23</script> 24----------------------------------------------------------------------------- 25<form method="POST" class="ajax" name="ajax" id="ajax" action="/test/"> 26 <input type="hidden" name="_token" value="{{{ Session::getToken() }}}"> 27 <input type="submit"> 28</form> 29-----------------------------------------------------------------------------

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

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

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

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

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

guest

回答2

0

ベストアンサー

lang

1// Log::debug( $_POST ); 2// Log::debug( $_GET ); 3return Response::json( array( 'data' => $_POST ) );

上記でやると、ajaxの戻り値で返ってくると思うのですが、
(実際にlaravel上で、ajaxやってるところから出しました)

あと、可能性として気になるところがちらほらあるので箇条書きで記載します。

・var dataString = form.serialize();
ここで、シリアライズして送信する事を想定していると思いますが、
typeは、POSTで送信されているので、dataの_tokenがちゃんと到達(認識?)出来ていないのではないかと思います。

lang

1var dataString = {}; 2dataString['_token'] = $('meta[name="csrf-token"]').attr('content'); 3 4~~~

上記の様に送信値はオブジェクトに入れてセットしないと_tokenが取れないんじゃないですかね?
(_tokenのセット部分は、自分のソース抜き出しただけなので、動かなければそちらの実装に即した形に書き換えてください)

・$_GETには何も入らないのでは?
ajax のtypeがPOSTで送られているので、$_GETには何も入らないのではないかと思います。
dumpするなら

lang

1return Response::json( array( 'data' => Input::all() ) );

とかでアクセスしてみるといいかと。

これぐらいですかね。

せめて、
・コードの結果からどうなる事を期待しているのか?
・何をもってして情報が引き渡されていないのか?判断したのか?
・ajax以外の方法(例えば単純なPOST送信等)は上手くいっているのか?

上記を記載すると、より回答しやすくなると思います。

投稿2015/06/17 16:16

ShintaroIshida

総合スコア87

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

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

amutas

2015/06/18 00:05

metaのcontentにtokenを設定したところうまくいきました! ありがとうございました!
guest

0

Laravelは使ったことないですが・・・
Route::anyでは/testなのに、ajaxで指定しているのは/uploadなので
そもそもリクエスト先を間違えていませんか?

投稿2015/06/17 08:03

icham

総合スコア559

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

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

amutas

2015/06/17 08:57

変更してみましたが、ダメでした...
icham

2015/06/17 11:25

chromeのデベロッパーツールなどで ajaxがアクセスしているアドレスを確認したり Route::any側でLog::debugではなく printにして同じくデベロッパーツールで responseを確認してみたらどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問