it-swarm.com.ru

Аякс ЛАРАВЕЛ 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)
31
Cowgirl

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

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

Добавьте это к вашему вызову ajax

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

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

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

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

3
Adnan Rasheed

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

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

Это сделает переменные компании доступными в представлении, и это должно правильно отображать HTML.

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

1
teeyo

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

1
Francisco Isidori

В laravel вы можете использовать view render . Ex. $ returnHTML = view ('myview') -> render (); myview.blade.php содержит код вашего блейда

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

0
EXayer

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

0
eli

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

0
Tim Hinz