Laravel 9中的JavaScript对话框删 debugging 误

lsmd5eda  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(78)

我想在删除项目之前用JavaScript创建一个确认对话框。
我的JavaScript代码

function confirmerSuppression() {
        var confirmation = confirm("Êtes-vous sûr de vouloir supprimer cet élément ?");

        if (confirmation) {
            window.location.href = '/tiers.destroy/' + id; // 
        } else {
            alert("Suppression annulée !");
        }
    }

字符串
删除按钮的代码

<form action="{{route('tiers.destroy', $tiers->id)}}" method="POST">
@csrf  
<button onclick="confirmerSuppression()" class="btn btn-danger w-100 type="submit">DELETE</button>                                 
</form>


我的路线:

Route::post('/tiers/details/{id}', [App\Http\Controllers\tiersController::class, 'destroy'])->name('tiers.destroy');


我的控制器:

public function destroy($id)
    {
        Tier::where("id","=",$id)->delete();
        return redirect()->route('prospects.liste')->with("success","Tier supprimée avec succès.");
    }

当我点击取消按钮时,对话框出现,当我点击取消时,它删除了与我点击是相同的元素。

任何人都有一个想法,请。

9nvpjoqh

9nvpjoqh1#

你可以用这个替换你的代码

function confirmerSuppression(id) {
    var confirmation = confirm("Êtes-vous sûr de vouloir supprimer cet élément ?");

    if (confirmation) {
        window.location.href = '/tiers.destroy/' + id;
    } else {
        alert("Suppression annulée !");
        return false; // Add this line to prevent form submission
    }
}

个字符

hs1rzwqc

hs1rzwqc2#

看起来这个问题可能与如何在JavaScript代码中构造要删除的URL有关。id变量没有在confirmerSuppression函数中定义。
下面是代码的更新版本:

function confirmerSuppression(id) {
    var confirmation = confirm("Êtes-vous sûr de vouloir supprimer cet élément ?");

    if (confirmation) {
        window.location.href = '/tiers/details/' + id + '/destroy';
    } else {
        alert("Suppression annulée !");
    }
}

字符串
在你的HTML中:

<form action="{{ route('tiers.destroy', $tiers->id) }}" method="POST">
    @csrf  
    <button type="button" onclick="confirmerSuppression({{ $tiers->id }})" class="btn btn-danger w-100">DELETE</button>                                 
</form>


确保将id从PHP代码传递给JavaScript函数。此外,我将button类型调整为“button”,以防止在确认之前提交表单。
此外,请确保路由文件中的路由定义使用正确的URL结构:

Route::post('/tiers/details/{id}/destroy', [App\Http\Controllers\tiersController::class, 'destroy'])->name('tiers.destroy');


现在,id应该被正确地传递给confirmerSuppression函数,并且URL应该被正确地构造以进行删除。

相关问题