【问题标题】:I want to reload the page on button click and perform the route action in new tab我想在按钮单击时重新加载页面并在新选项卡中执行路由操作
【发布时间】:2025-12-14 01:00:02
【问题描述】:
<form action="{{ route('payForEveryVoucherAndInvoice') }}" method="post" >
                                @csrf
                                <div class="row">
                                    <div class="col-sm-4">
                                        <div class="form-group">
                                            <select id="payment_method" class="form-control" name="payment_method" required>
                                                <option value="" selected="selected" disabled="disabled">Payment</option>
                                                <option value="cash">Cash</option>
                                                <option value="credit">Credit</option>
                                                <option value="debit">Debit</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="col-sm-1">
                                    <input type="text" name="driver" value="{{$voucher_driver}}" hidden>
                                    </div>
                                    <div class="col-sm-5">
                                        <button class="btn btn-primary" style="background-color: #262533; border-color: #262533" onClick="refreshPage()" formtarget="_blank">All Entries Paid</button>
                                    </div>
                                </div>
                            </form>

这是我的表格。我正在使用 onClick="refreshPage()" 来刷新我的页面。

<script>
    function refreshPage(){
        window.location.reload();
    }
</script>

这是脚本。但是当我按下按钮时。它只是重新加载页面,也不会继续前进。我想重新加载页面并打开另一个选项卡来执行路由操作。

有什么帮助吗?提前致谢。

【问题讨论】:

  • 更改按钮类型以提交和删除 onclick 处理程序上的任何内容

标签: javascript php laravel forms laravel-5


【解决方案1】:

您需要为此调用提交事件。

<script>
    function refreshPage(){
        $("form").submit();
        window.location.reload();
    }
</script>

我建议不要这样做。如下使用ajax。

$('body').on('submit', 'form', function (e) {
    e.preventDefault();
    $.ajax({
        url: $(this).attr('action'),
        data: new FormData(this),
        type: 'POST',
        contentType: false,
        cache: false,
        processData: false,
       
        success: function (data) {
           window.location.reload();
        },
    });
});

【讨论】:

  • jQuery 现在不应该被推荐。对于 AJAX 请求,Fetch API 或 axios 库会是更好的选择。