Laravel 5 中的 Ajax post 请求返回错误 500(内部服务器错误)

2022-08-30 17:58:09

这是我在 laravel 5 中的测试 ajax(参考下文)

$("#try").click(function(){
    var url = $(this).attr("data-link");
    $.ajax({
        url: "test",
        type:"POST",
        data: { testdata : 'testdatacontent' },
        success:function(data){
            alert(data);
        },error:function(){ 
            alert("error!!!!");
        }
    }); //end of ajax
});

和触发器链接

<a href="#" id="try" data-link="{{ url('/test') }}">Try</a>

和我的路线

Route::post('test', function()
{
    return 'Success! ajax in laravel 5';
});

但是当我在谷歌浏览器中运行控制台时,它会给我一个错误,它没有返回预期的响应“返回'成功!ajax in laravel 5';”

开机自检 http://juliver.laravel.com/test 500(内部服务器错误)

我的代码有什么问题/问题?我错过了什么?


答案 1

虽然这个问题存在了一段时间,但没有给出可接受的答案,但我想指出你的解决方案。由于您使用 ajax 发送,并且可能仍在使用 CSRF 中间件,因此您需要在请求中提供额外的标头。

向每个页面(或主布局)添加元标记:<meta name="csrf-token" content="{{ csrf_token() }}">

并添加到您的javascript文件(或页面中的部分):

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

有关更多详细信息,请参阅 https://laravel.com/docs/master/csrf#csrf-x-csrf-token


答案 2

90% 的 laravel ajax 内部服务器错误是由于缺少 CSRF 令牌。其他原因可能包括:

  • 错误的请求类型(例如,发送帖子以获取)
  • 错误的数据类型(例如,ajax 期望 JSON 和应用返回字符串)
  • 您的 .htaccess 配置错误
  • 缺少路线
  • 代码错误

您可以在此处详细了解以下内容:https://abbasharoon.me/how-to-fix-laravel-ajax-500-internal-server-error/


推荐