Ajax Query не работает с ползунками диапазона в Laravel - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь получить значение из ползунка диапазона и обновить свою базу данных с помощью ajax, но это выдает мне ошибку состояния 404. Я использую Laravel.

Это мой маршрут:

Route::post('developer/work-progress/changeProgess','DeveloperController@changeProgess');

Вот HTML-код:

<div class="form-group row themered">
    <label for="range_02" class="col-sm-2 col-xs-12 control-label"><b>Back-End</b><span class=" font-13 d-block text-muted clearfix">Set backend progress</span></label>
    <div class="col-sm-10 col-xs-12">
        <input type="text" id="range_01" name="frontend_percent">
    </div>
</div>

<div class="form-group row themered">
    <label for="range_02" class="col-sm-2 col-xs-12 control-label"><b>Front-End</b>
        <span class=" font-13 d-block text-muted clearfix">Set frontend progress</span>
    </label>
    <div class="col-sm-10 col-xs-12">
        <input type="text" id="range_02" name="backend_percent">
    </div>
</div>

<div class="form-group">
    <input class="progressId" type="hidden" name="id" value="{{$order->id}}">
</div>

<div>
    <button class="btn btn-info changeProgress">Change</button>
</div>

Вот мой код jQuery:

var frontend  = $('#range_01').val();
var backend  = $('#range_02').val();

$('#range_01').change(function () {
    frontend = $(this).val();
});

$('#range_02').change(function () {
    backend = $(this).val(); 
});

$('.changeProgress').click(function () {   
    $.ajax({
        type: 'post',
        url: 'work-progress/changeProgress',
        dataType: 'json',
        data: {
            'frontend_percent' : frontend,
            'backend_percent' : backend,
            'id':   $('.progressId').val()
        },
        headers: {"X-CSRF-Token": token},
        success : function (data) {
            console.log("worked");
        }
     });
});

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

public function changeProgess(Request $request) {

    $data = Order::findOrFail($request->id);

    $data->frontend_percent = $request->frontend_percent;
    $data->backend_percent =  $request->backend_percent;

    $data->save();

    return response()->json($data);

}

Я вижу свои данные на вкладке сети при проверке, а также токен csrf. Так что я не знаю, где проблема.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

На самом деле вам нужно использовать метод объекта запроса, такой как «input», например,

$request->input('id');
$request->input('frontend_percent');

И так далее. Подробнее об этом вы можете прочитать здесь: https://laravel.com/docs/5.6/requests Не забудьте изменить версию в URL, если вы не используете 5.6 для отражения своей собственной версии.

0 голосов
/ 28 июня 2018

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

Сначала вам нужно проверить правильность вашего маршрута. Самый простой способ - поместить dd () в начало вашей changeProgess() функции

public function changeProgess(Request $request) {
    dd('here');  // test dd
    $data = Order::findOrFail($request->id);

Если вы добираетесь туда, то ваш следующий шаг - выяснить, существует ли передаваемый вами идентификатор в вашей базе данных.

Функция findOrFail() вернет 404, если у вас нет этого идентификатора в вашей базе данных.

Самый простой способ сделать это - проверить, прошли ли вы эту функцию.

public function changeProgess(Request $request) {
    $data = Order::findOrFail($request->id);
    dd($data);  // test dd

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

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