Подтвердить что ты не робот

Ошибка AJAX LARAVEL 419 POST

Я бы очень признателен за помощь в этом. Я попробовал множество решений, размещенных на этом форуме, но я не могу заставить его работать.

Мой вызов ajax - это что-то вроде

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

Я вызываю вид через свой маршрут

Route::post('/company', '[email protected]');

И контроллер

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

Моя компания .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)
4b9b3361

Ответ 1

Ошибка Laravel 419 post обычно связана с авторизацией api.php и токена

Laravel автоматически генерирует "токен" CSRF для каждого активного сеанса пользователя, управляемого приложением. Этот токен используется для проверки того, что аутентифицированный пользователь является тем, кто действительно делает запросы к приложению.

Добавьте это в свой вызов ajax

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

или вы можете исключить некоторые URI в промежуточном программном средстве VerifyCSRF

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

Ответ 2

В вашем действии вам нужно сначала загрузить такие компании:

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

Это приведет к тому, что переменная компаний будет доступна в представлении, и она должна правильно отобразить HTML.

Попробуйте использовать расширение postman chrome для отладки вашего представления.

Ответ 3

У меня была та же проблема, и в конечном итоге это была проблема с размером поста в php. Увеличение его решило проблему.

Ответ 4

Ошибка 419 происходит, когда вы не публикуете csrf_token. в вашем методе post вы должны добавить этот токен вместе с другими переменными.

Ответ 5

У вас нет данных, которые вы отправляете! Попробуйте добавить эту строку к вашему 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

В laravel вы можете использовать рендеринг вида. ех. $ returnHTML = view ('myview') → render(); myview.blade.php содержит ваш код лезвия

Ответ 7

Я получил эту ошибку, когда у меня был файл конфигурации с <?php во второй строке вместо первой.

Ответ 8

Возникла та же проблема, помог регенерировать ключ приложения - php artisan key:generate