【发布时间】:2016-07-26 12:41:35
【问题描述】:
我是 Laravel 的新手。我正在尝试在我的 laravel 应用程序中发出 AJAX 请求,但收到 500(内部服务器错误)。 所以,这是我在 .blade 文件中的请求:
<script>
$(document).ready(function () {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#getRequest').on('click', function () {
$.get('getMessages', function (data) {
$('#target').append(data);
});
});
});
</script>
我添加了 .ajaxSetup 以确保令牌不是导致此问题的原因。所以我在这个 .blade 文件中还输入了以下标签:
<meta name="csrf-token" content="{{ csrf_token() }}" />
这是我的 route.php 文件:
Route::get('getMessages', 'PagesController@getMessages');
这是我的控制器,原因是方法:
public function getMessages()
{
return "OK";
}
这个问题对我来说很棘手,因为我知道我可以在我的 route.php 文件中为这个 URI 创建一个匿名函数,它会是同样的事情。或不。我不知道,因为如果我真的这样做了
Route::get('getMessages', function ()
{
return "OK";
});
它不是指向控制器的方法,而是有效!但我需要它在控制器中工作。
当涉及到其他方法时,我的控制器运行正常,并且方法的名称在任何地方都拼写正确。
我在 Windows 上使用 XAMPP。我将 XAMPP 设置为仅适用于当前的 Laravel 应用程序,因此当我在浏览器中输入“localhost”时,它会将我带到我的应用程序页面,并且所有数据库数据获取工作正常。
【问题讨论】:
-
我意识到我拼错了控制器名称。但是还是有问题。当我检查它是否是 ajax 请求时,我得到了同样的错误。如果我直接从 routes.php 文件运行此检查,它就可以工作。
if (Request::ajax()) { return 'ho'; }