调用控制器功能重定向到空白页面

问题描述 投票:0回答:1

我的视图中有几个字段集,每个字段集都有一个

submit
按钮

<button class="next action-button" type="submit" name="next" data-gotostep="3">(Save & Next)</button>

按钮调用此路线

Route::get('worksteps/store/{subprocess_id}', 'WorkstepsController@store')->name('worksteps.store');

存储功能

public function store(StoreWorkstepRequest $request)
{
    
    $created_by_id = Auth::user()->id;

    $value = $request->target_value;
    $unit  = $request->unit;
    $subprocess_id = $request->subprocess_id;
    $step_position = $request->subprocess_step_position;
    $step_system_id = $request->subprocess_system_id;
    $registry_date = Carbon::now()->toDateTimeString();

    DB::table('subprocess_registry')->updateOrInsert(
        ['subprocess_id' => $step_system_id],
        ['value' => $value,
         'unit' => $unit,
         'step_position' => $step_position,
         'created_at' => $registry_date,
         'created_by_id' => $created_by_id,
        ]
    );

    return back();
  
}

一切都按预期工作,除了重定向到空白页的

return back();
行 我只需要调用 store 方法而不返回任何内容,也不对视图进行任何更改。

尝试过

return back();
return redirect()->back();
return redirect()->previous();

他们都重定向回空白页面,还尝试完全删除 return 语句。 如何在后台调用

store
函数而不影响
view

php laravel laravel-blade
1个回答
0
投票

您可以使用 AJAX 来实现:

首先添加jquery:

将按钮类型更改为按钮,这样它就不会尝试以传统方式提交表单:

<button class="next action-button" type="button" name="next" data-gotostep="3">(Save & Next)</button>

AJAX 提交:

$(document).ready(function() {
    $('.next.action-button').on('click', function() {
        var subprocess_id = $(this).data('gotostep'); // Retrieve subprocess_id from the button data attribute
        $.ajax({
            url: '/worksteps/store/' + subprocess_id,
            type: 'GET',
            data: {
                target_value: $('input[name="target_value"]').val(),
                unit: $('input[name="unit"]').val(),
                subprocess_id: $('input[name="subprocess_id"]').val(),
                subprocess_step_position: $('input[name="subprocess_step_position"]').val(),
                subprocess_system_id: $('input[name="subprocess_system_id"]').val(),
            },
            success: function(response) {
                console.log(response);
            },
            error: function(xhr, status, error) {
                console.error(error);
            }
        });
    });
});

在你的控制器中你应该返回 JSON:

return response()->json(['status' => 'success', 'message' => 'Data saved successfully']);
© www.soinside.com 2019 - 2024. All rights reserved.