перезагрузите страницу после нажатия «ОК» с помощью Sweetalert - PullRequest
0 голосов
/ 20 января 2019

Попытка перезагрузить страницу после сообщения об успешном завершении, но она не перезагружается.

У меня есть этот код

$.ajax({
  type: "post",
  url: '/action.cfm?method=quote',
  data: datastring,
  success: function(data) {
    var valid = $.trim(data);
    if (valid.toLowerCase().indexOf("error") == '-1') {
      localStorage.setItem("swal", swal({
        title: "Good job!",
        text: 'Thanks',
        type: "success",
        showConfirmButton: true
      }).then(function() {
        location.reload();
      }));
      localStorage.getItem("swal");
    } else {
      swal("Oops", data, "error");
    }
  }
});

но я получаю сообщение об ошибке

(index):389 Uncaught TypeError: Cannot read property 'then' of undefined
    at Object.success ((index):389)
    at fire (jquery-1.12.4.js:3232)
    at Object.fireWith [as resolveWith] (jquery-1.12.4.js:3362)
    at done (jquery-1.12.4.js:9840)
    at XMLHttpRequest.callback (jquery-1.12.4.js:10311)

1 Ответ

0 голосов
/ 20 января 2019

Убедитесь, что вы используете новую версию Sweetalert (ниже, в jsfiddle, вы можете найти 2.1.2) - я получил предупреждение об использовании устаревших свойств showConfirmButton и type.Вот слегка измененный код, который работает в jsfiddle:

$(document).ready(function() {
    $.ajax({
        type: "post",
        url: '/echo/json/',
        data: {},
        success: function(data) {
            var valid = $.trim(data);
            if (valid.toLowerCase().indexOf("error") == '-1') {
                localStorage.setItem("swal", swal({
                    title: "Good job!",
                    text: 'Thanks',
                    icon: "success",
                    button: true
                }).then(function() {
                    console.log('sth');
                    location.reload();
                }));
                localStorage.getItem("swal");
            } else {
                swal("Oops", data, "error");
            }
        }
    });
});

https://jsfiddle.net/wlecki/rwc58h17/

Но в целом, если вам нужно сохранить его в локальном хранилище браузера, я предлагаю вам сохранить только параметры подсластителяи используйте их, если хотите отобразить подсластитель:

$(document).ready(function() {
    $.ajax({
            type: "post",
            url: '/echo/json/',
            data: {},
            success: function(data) {
                var valid = $.trim(data);
                if (valid.toLowerCase().indexOf("error") == '-1') {
                    localStorage.setItem("swal", JSON.stringify({
                        title: "Good job!",
                        text: 'Thanks',
                        icon: "success",
                        button: true
                    }));

                    swal(JSON.parse(localStorage.getItem("swal"))).then(() => location.reload());
            } else {
                swal("Oops", data, "error");
            }
        }
    });
});

https://jsfiddle.net/wlecki/71vzasxh/

...