Пакет Sweetalert и jQuery submit() работают неправильно

Использование библиотеки 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 - это идентификатор элемента.

Затем я использую окно подтверждения (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>

У меня есть контроллер ресурсов, который принимает метод удаления с идентификатором валюты. Однако, если я использую sweetalert с jquery submit(), он всегда отправляет «1» вместо фактического $currency->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".

маршруты.php:

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

Что случилось?


person Alexander Kim    schedule 19.12.2016    source источник
comment
Не могли бы вы показать мне свой маршрут, пожалуйста?   -  person scottevans93    schedule 19.12.2016
comment
Попробуйте определить свой собственный маршрут, посмотрите, изменится ли это. Route::post('currency/{id}', 'CurrencyController@destroy');   -  person scottevans93    schedule 19.12.2016
comment
если я вообще удалю javascript и изменю свою кнопку на отправку, она будет работать как задумано. То, что вы предлагаете, не сработает, потому что проблема не в моих маршрутах, а в jquery submit(). Вы знаете, как отправить идентификатор моей валюты с помощью submit()?   -  person Alexander Kim    schedule 19.12.2016
comment
Ну, ваш идентификатор отправляется вашим действием /admin/currency/7   -  person scottevans93    schedule 19.12.2016
comment
Верен ли URL-адрес в адресной строке вашего браузера после отправки?   -  person scottevans93    schedule 19.12.2016
comment
Мой URL-адрес всегда /admin/currency/1, хотя фактический идентификатор равен 7. Магия...   -  person Alexander Kim    schedule 19.12.2016
comment
Очень странно, не должно быть причин для его изменения   -  person scottevans93    schedule 19.12.2016


Ответы (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();
});

})

Я думаю, что это даст вам правильное значение.

Надеюсь, поможет

person Kgn-web    schedule 19.12.2016
comment
Ваша строка //post the form - вы хотите опубликовать с помощью AJAX? Если да, то мне там не нужен ajax. Также с вашим кодом мой запрос на удаление будет отправлен при загрузке страницы, мне это не нужно. Я хочу, чтобы он срабатывал, когда пользователь нажимает кнопку DELETE. currency:258 Uncaught SyntaxError: Unexpected token ! Значит, с click() нельзя? - person Alexander Kim; 19.12.2016
comment
обновил мой пост, чтобы удовлетворить ваши требования. Пожалуйста, проверьте :) - person Kgn-web; 19.12.2016
comment
Не работает, жалуется на токен. Почему плохая идея использовать click() ? - person Alexander Kim; 19.12.2016
comment
stackoverflow.com/questions/12785241/ - person Kgn-web; 19.12.2016
comment
Можете ли вы попробовать еще одно обновление вместо передачи идентификатора в URL-адресе, использовать скрытое поле и передать его на сервер. Это обязательно решит проблему <input type='hidden' value='7' name='id' /› ` - person Kgn-web; 19.12.2016
comment
валюта: 258 Uncaught SyntaxError: Неожиданный токен! Это настоящая причина. Вы должны изучить его и исправить. Вот и все - person Kgn-web; 19.12.2016
comment
На самом деле он жалуется на ваш код: yadi.sk/i/Nfdoug3U343JkE - person Alexander Kim; 19.12.2016
comment
Лол, пожалуйста, проверьте, что я сделал. Я использую флаг !isConfirm внутри, если условие не в параметре функции - person Kgn-web; 19.12.2016
comment
Теперь он жалуется на неожиданный токен, если... wtf... yadi.sk/i/sED9i9m_343N4Q Что я делаю неправильно? - person Alexander Kim; 19.12.2016
comment
Я исправил свой фрагмент, swal() должен быть закрыт, а затем, если нужно проверить условие - person Kgn-web; 19.12.2016
comment
Теперь ошибок нет, но нажатие на кнопку отправки ничего не дает. *сладкая тревога... - person Alexander Kim; 19.12.2016
comment
Изменить тип кнопки для отправки <button type="submit" class="btn btn-danger btn-delete"> - person Kgn-web; 19.12.2016
comment
если я изменю тип отправки, то сладкое предупреждение не запустит свое модальное окно. Если я не использую Sweetalert, то все работает как положено. - person Alexander Kim; 19.12.2016
comment
Зачем вам Sweetalert, если вы перезагружаете страницу. Конечно, с кнопкой отправки не появится всплывающее сладкое предупреждение. Это вызов ajax, тогда swal имеет смысл. - person Kgn-web; 19.12.2016
comment
Я сейчас объясню. Это панель администратора со списками всех моих страниц. Взгляните на него: yadi.sk/i/qvR6YCLl343XbG, надеюсь, вы поняли мою идею. - person Alexander Kim; 19.12.2016
comment
Я обновил свой фрагмент. Проверь это. Кроме того, эта ссылка будет полезна для вас stackoverflow.com/questions/32164151/ - person Kgn-web; 19.12.2016
comment
работает сейчас! Большое спасибо. Вы не поняли мою идею с самого начала? - person Alexander Kim; 19.12.2016
comment
Да .. На вашем скриншоте я узнал, что вы пытаетесь сделать. Но рад, что мы это исправили Ура :) - person Kgn-web; 19.12.2016