Ajax запрос и 500 ошибка

When ever I am doing an ajax request with jquery I always get an error 500 return,

I am posting to the following URL

http://localhost/domain/index.php/my_profile/interests_music

using this javascript,

$("#add").click(function(e){

    //set some process variables, we need to get the forms action, 
    //and any post data it is sending appending isAjax into the params
    //gives us a point in the controller to gracefully check for ajax.
    var action = $(this).parent('form').attr('action');
    var formData = $(this).parent('form').serialize()+"&isAjax=1";

    $.ajax({
        type: "POST",
        url: action,
        data: formData
    }).done(function( msg ) {
        alert( "Data Saved: " + msg );
    });

    e.preventDefault();
});

The params that are being sent are,

music=Savage Garden&isAjax=1

And the PHP method the ajax is requesting looks like this,

public function interests_music()
{
    if($this->input->post('music'))
    {
        $this->rest->initialize(array('server' => 'https://www.googleapis.com/freebase/v1'));
        $response = $this->rest->get('mqlread?query={"type":"/music/artist","name":"' . urlencode($this->input->post('music')) . '","id":[]}');
        $data['image'] = 'https://usercontent.googleapis.com/freebase/v1/image'.$response->result->id[0].'?mode=fillcrop&maxwidth=80&maxheight=80';
        $data['category'] = 'music';
        $data['user_id'] = $this->session->userdata('id');
        $data['name'] = $this->input->post('music', TRUE);

        $this->profile_model->add_interest($data);

        Events::trigger('interests_music');
        Events::trigger('badge_stagediver');

        if($this->input->post('isAjax') == 1)
        {
            echo json_endcode($data);
            $this->_buttons();
        }

        redirect('my_profile/interests');
    }
    else
    {
        show_404();
    }
}

Am I missing something, is this a common problem?

Я из базы достаю записи определенного пользователя. При желании пользователь может оставить комментарий к записи. Есть кнопка «Добавить комментарий», при нажатии на которую вываливается 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')

В чем может быть проблема?

In this tutorial you will learn about the Laravel 5 Fix Ajax Post 500 Internal Server Error and its application with practical example.

Many times while trying to submit form data using ajax you encounter 500 internal server error, in most of the cases this happens due to not adding csrf_token with form data or not setting X-CSRF-TOKEN request header with ajax form submit request. In this tutorial, I’ll show you how to add CSRF Meta and Ajax Headers properly to avoid internal server error.

Table Of Contents

  • Laravel 5 Fix Ajax Post 500 Internal Server Error
  • Add CSRF Meta and Set Ajax Headers

Laravel comes with a security mechanism called csrf token. In Laravel, each of the request is attached a csrf_token that is validated before can be processed. In order to submit form data using ajax, we must have to incorporate csrf token with form data and set X-CSRF-TOKEN request header with ajax form submit request. This CSRF Token can generated using csrf_token() helper of laravel 5.

Add CSRF Token In Meta tag :-

<meta name=«csrf-token» content=«{{ csrf_token() }}»>

Set CSRF Token In jQuery Ajax Header :-

$.ajaxSetup({

  headers: {

    ‘X-CSRF-TOKEN’: $(‘meta[name=»csrf-token»]’).attr(‘content’)

  }

});

In this tutorial we have learn about the Laravel 5 Fix Ajax Post 500 Internal Server Error and its application with practical example. I hope you will like this tutorial.

  • Dec-23-2022
  • Techsolutionstuff

  • Laravel
    PHP
    jQuery

In this article, we will see 500 internal server errors in laravel 9 ajax. Also, we can see how to solve or fixed laravel 9 500 internal server error ajax. If you are fetching 500 internal server errors in jquery ajax post request in laravel 9. Here we will let you know how to fix the ajax post 500 (Internal Server Error) request in laravel 9.

Laravel provides the best security using the csrf token. So, you have each time pass csrf_token when you fire ajax in the post, delete or put a request. You can generate csrf token using the csrf_token() helper of laravel 9. we will see you how to generate csrf_token and pass on each ajax request of jquery. 

Also, you can add below meta tag and then you have to simply pass headers. It will automatically pass a token on each post request.

Add Meta tag:

<meta name="csrf-token" content="{{ csrf_token() }}">

Add JS Code:

$.ajaxSetup({

headers: {

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

}

});

As above both codes, you have to write on each page. So, you can simply put it on the layout page or common header page.


You might also like :

  • Read Also: Order By Query In Laravel 9 Example
  • Read Also: Socialite Login with Facebook Account In Laravel 9
  • Read Also: How To Solve The Page Expired 419 Error In Laravel
  • Read Also: User Roles And Permissions Without Package Laravel 9

RECOMMENDED POSTS

FEATURE POSTS

Можете ли вы опубликовать подпись своего метода, который должен принять этот пост?

Кроме того, я получаю такое же сообщение об ошибке, возможно, по другой причине. Мой YSOD рассказывал о словаре, не содержащем значения для значения, не имеющего значения NULL.
То, как я получил информацию YSOD, заключалось в том, чтобы поставить точку останова в функцию $.ajax, которая обрабатывала ошибку, как показано ниже:

<script type="text/javascript" language="javascript">
function SubmitAjax(url, message, successFunc, errorFunc) {
    $.ajax({
        type:'POST',
        url:url,
        data:message,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success:successFunc,
        error:errorFunc
        });

};

Тогда мой javascript errorFunc выглядит так:

function(request, textStatus, errorThrown) {
        $("#install").text("Error doing auto-installer search, proceed with ticket submissionn"
        +request.statusText); }

Используя IE, я отправился в меню просмотра → script отладчик → перерыв в следующей инструкции.
Затем отправился запускать код, который запустил бы мой пост. Обычно это меня куда-то глубоко внутри библиотеки jQuery, а не там, где я хотел, потому что в раскрывающемся меню select вызывается jQuery. Таким образом, я нажимаю StepOver, тогда и следующая следующая строка также сломается, и именно там я и хотел быть. Затем VS переходит в режим клиентской стороны (динамический) для этой страницы, и я вложил разрыв в строку $("#install"), чтобы я мог видеть (используя мышь над отладкой) то, что было в запросе, textStatus, errorThrown. запрос. В request.ResponseText появилось сообщение html, где я увидел:

<title>The parameters dictionary contains a null entry for parameter 'appId' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ContentResult CheckForInstaller(Int32)' in 'HLIT_TicketingMVC.Controllers.TicketController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.<br>Parameter name: parameters</title>

так что проверьте все это и опубликуйте подпись своего контроллера в случае, если часть проблемы

Понравилась статья? Поделить с друзьями:
  • Aisuite3 ошибка при выполнении приложения сервера progid aahm acpihmdata2
  • Airbag ceintu defaillants ситроен с4 ошибка
  • Airstage inverter коды ошибок general
  • Airbag ceintu defaillants ошибка пежо 307
  • Airpods ошибка драйвера windows 10