【问题标题】:Sweetalert package and jQuery submit() not working correctlySweetalert 包和 jQuery submit() 无法正常工作
【发布时间】:2017-05-04 09:44:29
【问题描述】:

使用 sweetalert 库。这是我的表格:

<form id="delete-currency" style="display:inline;" method="POST" action="/admin/currency/7">
   <input type="hidden" name="_token" value="sIgpTKlPJ4Z3Co4daRwGpZ8rz10TCM6Ynre8sdsdsd">
   <input type="hidden" name="_method" value="DELETE">
   <button type="button" class="btn btn-danger btn-delete"><i class="fa fa-trash-o" aria-hidden="true"></i></button>
</form>

7 - 是一个项目 ID。

然后我正在使用确认窗口(sweetalert):

<script type="text/javascript">
    $('.btn-delete').click(function() {
        swal({
            title: "Are you sure?",
            text: "blablabla!",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Yes, i am sure",
            closeOnConfirm: false,
            cancelButtonText: "Cancel"
        },
        function(isConfirm) {
            $('#delete-currency').submit();
        });
    });

</script>

我有一个资源控制器,它接受带有货币 ID 的删除方法。但是,如果我将 sweetalert 与 jquery submit() 一起使用,它总是发送“1”而不是实际的 $currency-&gt;id

我的控制器:

public function destroy($id)
{
    dd($id);
    $currency = Currency::findOrFail($id);
    $currency->delete();
    alert()->success('asdasdsadad', 'Success')->persistent('close');
    return redirect('/admin/currency');
}

dd($id) 一直显示“1”。

routes.php:

Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'admin']], function() {
    Route::resource('currency', 'CurrencyController');
});

怎么了?

【问题讨论】:

  • 你能告诉我你的路线吗?
  • 尝试定义自己的路线,看看是否有所作为。 Route::post('currency/{id}', 'CurrencyController@destroy');
  • 如果我完全删除 javascript 并将我的按钮更改为提交,它会按预期工作。您的建议不起作用,因为问题不在我的路线上,而是在 jquery 的submit() 上。你知道如何用submit()发送我的货币ID吗?
  • 你的 id 正在通过你的操作提交/admin/currency/7
  • 提交后浏览器地址栏中的url是否正确?

标签: javascript jquery laravel laravel-5.2 sweetalert


【解决方案1】:

试试这个。

 $('.btn-delete').on('click',function(e){
    e.preventDefault();
    var form = $(this).parents('form');
swal({
    title: "Are you sure?",
     text: "blablabla!",
     type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Yes, delete it!",
    closeOnConfirm: false
}, function(isConfirm){
    if (isConfirm) form.submit();
});

})

我认为这会给你正确的价值。

希望对你有帮助

【讨论】:

  • 你的行//post the form - 你是想用 AJAX 发帖吗?如果是,我不需要 ajax 那里。同样使用您的代码,我的删除请求将在页面加载时提交,我不需要。我希望它在用户按下“DELETE”按钮时触发。 currency:258 Uncaught SyntaxError: Unexpected token ! 所以用click() 是不可能的?
  • 更新了我的帖子以满足您的要求。请检查:)
  • 不工作,抱怨令牌。为什么使用 click() 是个坏主意?
  • 您能否再尝试一次更新,而不是在 url 中传递 id,使用隐藏字段并将其传递给服务器。它肯定会解决问题&lt;input type='hidden' value='7' name='id' /> `
猜你喜欢
  • 2021-10-22
  • 2018-04-19
  • 2017-06-12
  • 2015-11-13
  • 2011-07-24
  • 1970-01-01
  • 2014-07-20
  • 2012-06-15
  • 1970-01-01
相关资源
最近更新 更多