Ajax请求不访问Controller,Laravel

时间:2016-09-01 18:49:42

标签: ajax post laravel-5

如果我没有在路径文件中指定控制器,我有一个简单的发布请求。当我更改路径以访问我专门为AJAX请求创建的控制器时,它返回500内部服务器错误。

我的Route.php看起来像这样:

Route::post('ajaxTagStore', 'AjaxController@postAjaxTag');

我的控制器看起来像这样:

<?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)

1 个答案:

答案 0 :(得分:1)

至少有两个可能的问题。

  1. 您是通过文本编辑器手动创建还是从其他控制器复制?如果是这样,那么我可以建议您composer dump-autoload您的项目,以便更新其自动加载的文件。

  2. Laravel的Controller使用的Request类与routes.php文件中使用的类不同,因此我建议您何时将if(Request::ajax()){更改为if($request->ajax()){控制器方法

  3. 如果其中一个解决方案解决了您的问题,请告诉我。如果仍有问题,请显示ajax结果中显示的错误消息。希望它能回答你的问题。