Метод не допускается ошибка 405 опубликовать запрос AJAX для публикации маршрута - PullRequest
0 голосов
/ 04 января 2019

Я получаю метод, не разрешенный 405 ошибка при попытке отправить в базу данных с помощью ajax post запрос на публикацию маршрута. Пожалуйста, помогите

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

$.ajax({
    url: '{{url("HeatMapCoordinates")}}',
    data:{
        "finalPointArray" : finalPointsMap,
        "tourId":tourId,
        "picWidth":picWidth,
        "picName":picName
    },
    async:true,
    type:'post',
    success:function(response){
        console.log("coordinates sent");
        finalPointsMap=[];
        pointsMap=[];
        pointsMap.push(initialPoint);
    },
    error:function(e){
        console.log("error");
        console.log(e);
    }
});

Я тоже пробовал

url: '{{route("HeatMapCoordinates.store")}}',

Но это также не работает, мой маршрут:

Route::resource('/HeatMapCoordinates','HeatMapCoordinatesController');

Моя функция контроллера:

 public function store(Request $request)
{   
    $this->validate($request, array(
        'tourId'     => 'required',
        'picWidth' => 'required',
        'picName'  => 'required',
        'finalPointArray'  => 'required',

    ));
...
return 'stored';
}

1 Ответ

0 голосов
/ 09 января 2019

Попробуйте с этим:

$(document).ready(function(){

 $('#your_form').on('submit', function(event){
  event.preventDefault();
  $.ajax({
   url:"{{ route('HeatMapCoordinates_store') }}",
   method:"POST",
   data: new FormData(this),
   dataType:'JSON',
   contentType: false,
   cache: false,
   processData: false,
   success:function(data)
   {
    console.log(data);
    // ANY CODE HERE
    $('#result').html(data.result);
   },
   error:function(data){
    console.log(data);
    $('#result').html('No result. We have an ERROR ...');
    }
  })
 });

});

И используйте такую ​​форму:

<form method="POST" id="your_form">
    <input type="text" name="finalPointsMap">
    <input type="text" name="tourId">
    <input type="text" name="picWidth">
    <input type="text" name="picName">

    <input type="submit" name="go" value="Submit">
</form>

Используйте это <div>, чтобы показать результаты:

<div id="result"></div>

И после вашего <head>:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>

Используйте это Маршрут :

Route::post('/HeatMapCoordinates/store','HeatMapCoordinatesController@store')->name('HeatMapCoordinates_store');

И используйте эту функцию в вашем контроллере :

public function store(Request $request)
{   
    $validator = $this->validate($request, [
        'tourId'     => 'required',
        'picWidth' => 'required',
        'picName'  => 'required',
        'finalPointArray'  => 'required'
    ]);

    # RETURN ERRORS AS JSON
    if ($validator->fails()) {
       return response()->json([
            'result' => 'ERROR: ' // USE $validator->errors() for example ... 
        ]);
    }

    # USE YOUR INPUTS HERE, LIKE THIS 
    $id = $request->tourId;

    return response()->json([
        'result' => 'Good, ID is : '.$id
    ]);
}

Пожалуйста, скажите мне, если это работает :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...