【问题标题】:Ajax Query not working with range sliders in LaravelAjax Query 不适用于 Laravel 中的范围滑块
【发布时间】:2023-03-17 20:06:02
【问题描述】:

我正在尝试从范围滑块中获取值并使用 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-token 时,我可以在网络选项卡中看到我的数据。 所以我不知道问题出在哪里。

【问题讨论】:

    标签: jquery mysql ajax laravel laravel-5


    【解决方案1】:

    其实你需要用到请求对象的一个​​方法,比如“input”,像这样

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

    等等。你可以在这里阅读更多信息:https://laravel.com/docs/5.6/requests 如果你不使用 5.6 来反映你自己的版本,请不要忘记更改 url 中的版本。

    【讨论】:

      【解决方案2】:

      有两件事可能会导致您的问题。

      首先您需要检查您的路线是否正确。 最简单的方法是将 dd() 放在 changeProgess() 函数的顶部

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

      如果您到达那里,那么下一步就是确定您传递的 id 是否存在于您的数据库中。

      如果您的数据库中没有该 ID,findOrFail() 函数将返回 404。

      最简单的方法是查看您是否通过了该功能。

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

      如果您没有到达这里,那么您的数据库中没有 Order,您需要检查您传递到表单中的值。

      【讨论】:

        猜你喜欢
        • 2017-04-08
        • 1970-01-01
        • 1970-01-01
        • 2020-04-03
        • 2021-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        相关资源
        最近更新 更多