@LP-DIMAN

Почему при попытке отправить ajax запрос на сервер методом post выскакивает ошибка 500 Internal Server Error?

Я из базы достаю записи определенного пользователя. При желании пользователь может оставить комментарий к записи. Есть кнопка "Добавить комментарий", при нажатии на которую вываливается textarea с кнопкой "Добавить". Вот все это хочу сделать ajaxom. Текст из textarea я получаю, но все это дело в бд не попадает.

Вот скрипт:
$('.comment').click(function(){
		
	var id_advert = $(this).val();
	//console.log(id_advert);
	$(this).html("<textarea rows=10 cols=70 name='add_comment' class='add_comment' maxlengh='256' autofocus> </textarea><br><button type='submit' name='add' class='add'> Добавить сообщение</button>");
	$.get('edit_advert',{comment:id_advert},function()
		{
	$('.add').click(function(){	
	var params = $('.add_comment').serialize();
console.log(params);
	console.log($.post('add_comment',params));
	
		});
	
		});
});


Вот метод, который должен все это обрабатывать:
public function edit_advert(Request $request)
	{
		$id_advert = $_GET['comment'];
		$id_client = Auth::user()->id;
		$comment = $request->input('add_comment');
		
		Adverts::add_comment($comment,$id_client,$id_advert);
	

		
	}

Вьюшка:
<div class="panel-body">
				@foreach ($remember_adverts_client as $advert)

					<div class="table table-bordered">
                    Объявление добавлено <em> {{$advert->date}} </em> <br>
                    <strong>{{$advert->title}}</strong><br>
                    <strong>Тип недвижимости: </strong>{{$advert->type}}<br>
                    <strong>Количество комнат: </strong>{{$advert->quantity_room}}<br>
                    <strong>Город: </strong>{{$advert->city}}<br>
                   <strong> Описание: </strong> {{$advert->description}}<br>
                   <strong> Телефон: </strong>{{$advert->phone}}<br>
                   <!--<form action="edit_advert" method="GET"> -->
                   <button type="submit" value="{{$advert->id_realty}}" name="comment" class="comment"> Добавить комментарий</button>

                   <button type="submit" value="{{$advert->id_realty}}" name="cross"> Перечеркнуть </button>
                   <button type="submit" value="{{$advert->id_realty}}" name="lead">Обвести</button>
                   <button type="submit" value="{{$advert->id_realty}}" name="link">Поделиться ссылкой</button>
                   <!--</form> -->
				@endforeach

И роут:
Route::get('edit_advert','ClientController@edit_advert');
Route::post('add_comment','ClientController@edit_advert')


В чем может быть проблема?
  • Вопрос задан
  • 20365 просмотров
Решения вопроса 1
samoilenkoevgeniy
@samoilenkoevgeniy
Lead Full-Stack Web Developer
Добавьте token
<input type="hidden" name="_token" value="{{ csrf_token() }}" />

в запрос к серверу и все будет окей, либо смените тип с post на get,
Не принимает потому что стоит csrt защита, помогает она защититься от подмены запросов.

И новогодний подарок - ошибку можно посмотреть в консоли браузера, там все интуитивно понятно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DJZT
@DJZT
Laravel - code for you
Вам надо делать так в JS
params = $('.add_comment').serialize()
$.post('add_comment', {id_advert: <your id advert>, data: params});


А на сервере принимать так

public function add_comment_advert(Request $request)
  {
    $id_advert = $request->input('id_advert');
    $id_client = Auth::user()->id;
    $comment = $request->input('data.add_comment');
    
    Adverts::add_comment($comment,$id_client,$id_advert);
  

    
  }
Ответ написан
romy4
@romy4
Exception handler
Дело не в ajax, дело в том, что на принимающей стороне. То ли htaccess неправильно настроен, то ли падает скрипт, а падение бэкэнда всегда 500
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы