Ajax LARAVEL 419 POST错误

时间:2017-09-28 15:20:27

标签: php jquery ajax laravel

我真的很感激这方面的一些帮助。 我在这个论坛上发布了大量的解决方案,但我无法让它发挥作用。

我的ajax电话就像是

$(document).ready(function() {
    $("#company").click(function() {
        $.ajax({
            type: "POST",
            dataType:'html',
            url : "/company",
            success : function (data) {
                $("#result").html(data);
            }
        });
    });
});

我通过我的路线呼叫视图

Route::post('/company', 'Ajaxcontroller@loadContent');

和控制器

public function loadContent()
    {
        return view('listing.company')->render();
    }

我的company.blade.php是

    @foreach ($companies as $company)
            <div class="posting-description">
            <h5 class="header"><a href="#"></a>{{$company->name}}
            </h5>
            <h5 class="header"> {{$company->streetaddress}} {{$company->postalcode}}</h5>  
            <p class="header">
             <span class="red-text"> <?= $service; ?> </span> is available on <span class="green-text"><?php echo $date; ?></span>
           </p>
    @endforeach

我收到此错误

POST http://127.0.0.1:8234/company 419 (unknown status)

10 个答案:

答案 0 :(得分:72)

Laravel 419发布错误通常与api.php和令牌授权有关

Laravel为应用程序管理的每个活动用户会话自动生成CSRF“令牌”。此令牌用于验证经过身份验证的用户是否是实际向应用程序发出请求的用户。

将此添加到您的ajax调用

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

或者您可以在VerifyCSRF令牌中间件中排除某些URI

 protected $except = [
        'stripe/*',
    ];

答案 1 :(得分:5)

419当您不发布csrf_token时发生错误。在您的post方法中,您必须将此令牌与其他变量一起添加。

答案 2 :(得分:1)

在您的行动中,首先需要加载公司:

$companies = App\Company::all();
return view('listing.company')->with('companies' => $companies)->render();

这将使公司变量在视图中可用,并且应该正确呈现HTML。

尝试使用postman chrome扩展程序调试您的视图。

答案 3 :(得分:1)

我遇到了同样的问题,但最终导致php max帖子大小出现问题。增加它可以解决问题。

答案 4 :(得分:1)

遇到同样的问题,重新生成应用程序密钥有所帮助-php artisan key:generate

答案 5 :(得分:0)

您没有提交任何数据!尝试将此行添加到您的ajax:

data: $('form').serialize(),

确保更改名称以匹配!

此外,您的数据应在表单提交功能中提交。

您的代码应如下所示:

<script>
	$(function () {
		$('form').on('submit', function (e) {
			e.preventDefault();
			$.ajax({
				type: 'post',
				url: 'company.php',
				data: $('form').serialize(),
				success: function () {
					alert('form was submitted');
				}
			});
		});
	});
</script>

答案 6 :(得分:0)

在laravel中,您可以使用视图渲染。 恩。 $ returnHTML = view(&#39; myview&#39;) - &gt; render(); myview.blade.php包含您的刀片代码

答案 7 :(得分:0)

当我在第二行而不是第一行有一个<?php的配置文件时,收到了此错误。

答案 8 :(得分:0)

即使在ajax请求中指定了令牌,当活动用户会话的CSRF“令牌”已过期时,您也可能会收到该错误。

答案 9 :(得分:0)

第一步:将 csrf 元标记放在 head 中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <title>Document</title>
</head>
<body>

第 2 步:使用这种 ajax 格式

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
    $(document).ready(function(){
      $("#frm").submit(function(e){
        e.preventDefault();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
            });
        $.ajax({
                url:"{{ url('form_submit') }}",
                data:$('frm').serialize(),
                type:'post',
                success: function(result){
                    console.log(result);
                }
        });
      });
    });
</script>