2016-09-01 15 views
0

ルートファイルにコントローラを指定しないと、現在動作している単純なポストリクエストがあります。 AJAXリクエスト用に作成したコントローラにアクセスするためのルートを変更すると、500内部サーバエラーが返されます。コントローラ、LaravelにアクセスしないAjaxリクエスト

マイRoute.phpは次のようになります。

Route::post('ajaxTagStore', '[email protected]'); 

私のコントローラは、次のようになります。

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class AjaxController extends Controller 
{ 
public function postAjaxTag(Request $request) { 
    if(Request::ajax()){ 
    return Response::json(Request::all()); 
    } 
} 

}

そして最後に私のAJAXコードは次のようになります。

$.ajaxSetup({ 
    headers: { 
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

$(document).ready(function(){ 
    $('#tag-btn').click(function(){ 
    var fname = $('#firstname').val(); 
    var lname = $('#lastname').val(); 
    var token = $('#token').val(); 

    var dataString = $('#tag').serialize(); 

    $.ajax({ 
     type: 'POST', 
     url: '/ajaxTagStore', 
     data: dataString, 
     success: function(response){ // What to do if we succeed 
     console.log(response); 
     $('#postRequestData').html(response); 
     } 
    }) 

    }); 
}); 

私がそれを言ったように私がコントローラーを指定せずにこれを使用している場合は:

Route::post('ajaxTagStore', function(){ 
if(Request::ajax()){ 
    return Response::json(Request::all()); 
} 
}); 

これはどういう意味ですか? (私はcsrf-tokenも使用しています)

+0

storage/logsディレクトリにエラーメッセージがありますか? – Dan

答えて

1

少なくとも2つの問題があります。

  1. テキストエディタを使用して手動で作成するのですか、別のコントローラからコピーしましたか?もしそうなら、プロジェクトをcomposer dump-autoloadに提案して、自動ロードされたファイルを更新することができます。

  2. Laravelのコントローラがroutes.phpファイルで使用したものとは異なるRequestクラスを使用していますので、あなたがあなたのコントローラメソッド

if($request->ajax()){if(Request::ajax()){を変更したときに、私はまた示唆これらのいずれかの場合は私に知らせてください。解決策があなたの問題を解決しました。それでも問題が解決しない場合は、ajaxの結果に表示されるエラーメッセージを表示してください。あなたの質問にお答えしますように。

+0

2が正しい解決策でした。ありがとう! –

+0

@JoelPierreうまくいきました。この答えが解決策であるとわかったら、これを受け入れたとマークし、upvoteに感謝します。 –

+0

私はしましたが、私は十分な「ポイント」を持っていません。 –

関連する問題