如果我没有在路径文件中指定控制器,我有一个简单的发布请求。当我更改路径以访问我专门为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)
答案 0 :(得分:1)
至少有两个可能的问题。
您是通过文本编辑器手动创建还是从其他控制器复制?如果是这样,那么我可以建议您composer dump-autoload
您的项目,以便更新其自动加载的文件。
Laravel的Controller使用的Request
类与routes.php
文件中使用的类不同,因此我建议您何时将if(Request::ajax()){
更改为if($request->ajax()){
控制器方法
如果其中一个解决方案解决了您的问题,请告诉我。如果仍有问题,请显示ajax结果中显示的错误消息。希望它能回答你的问题。