2016-05-04 7 views
1

jquery ajaxポストをコントローラに実行しています。ここで、セッションが存在するかどうかを確認します。そのような場合は、私は値を読んで、私のセッションを忘れ、ビューにいくつかのデータを返します。laravel 5.2のAJAX要求のセッションを忘れることができません。

私が忘れてしまった後に私がsession() - >をコントローラ関数に使用すると、それは削除されます。しかし、私はページをリロードし、再びセッションがあるので、ajaxリクエストをやり直してください。

私のコントローラーでは、忘れてしまって、プルしてみました。

$request->session()->forget('last_history_id'); 
$request->session()->pull('last_history_id') 

それは、次のページのリロードを行っていますので、だから私の質問は、なぜ私は私のAjaxリクエストでセッションを忘れることができないのですか?

+0

このセッションの値はどこで設定しますか?ページを再読み込みすると、セッション変数が再び設定される可能性があります。 – Jerodev

+0

ここではそうではありませんが、私はフォームが投稿されたときにセッションを設定し、ユーザーをajax投稿のリストにリダイレクトします。 – tobros91

+0

'file'ドライバをセッション用に使用していると思われます。 – camelCase

答えて

1

config/session.phpファイルで、fileドライバからdatabaseドライバ(またはそのファイル以外のドライバ)に変更することをお勧めします。

fileと非同期呼び出しを使用すると、known issuesがあります。正確な問題が発生しましたが、databaseに切り替えた後、問題は解決しました。

databaseに簡単に切り替えることができます。さらに詳しいヘルプと関連するコードについてはdocsです。

セッションアイテムを含むようにテーブルを設定する必要があります。移行を生成するにはphp artisan session:tableを使用することができます。その後、composer dump-autoload、次にphp artisan migrateが続きます。これにより、データベースにテーブルが作成されます。

最後に、Laravelにこのドライバをお勧めします。環境設定の方法によっては、config/session.phpにハードコードされているか、.envファイルから取得されています。

+1

ありがとう、ファイルドライバとlaravel homesteadの組み合わせであるようですが、テストサーバーに展開するとこの問題は解消されます。ホームステイボックスを試して更新し、データベースドライバに変更する前にそれがなくなるかどうかを確認します。 – tobros91

+0

@ tobros91そうですね、それは私が長いGitHubの投稿から集めたものです。私にとって、問題はデータベースドライバに変更すると解決されましたが、私はHomesteadで作業していないので、恐らくそのアップデートがあなたのケースを助けるかもしれません。私はこれで半日のために私の尾を追いかけました:) – camelCase

+0

@ tobros91これに関する更新はありますか?更新や別のドライバへの切り替えが解決しましたか? – camelCase

0

この問題はおそらく鉱山に関連している:

私は最近、AJAXリクエストを使用しているときsession_idが変更された問題がありました。セッションをチェックすると、実際には新しいセッションになっている可能性があります。したがって、あなたがそれを忘れると、ブラウザのプライマリセッションに影響を与えません。

この問題は、ルート上のwebミドルウェアの二重バインドであった可能性があります。ウェブがすでにRouteServiceProviderに適用されていることに気づきませんでした。問題のルートで'middleware' => 'web'を削除した後、この問題は完全に解決しました。

関連する問題