Sweet Alert window.prompt передает значение на сервер - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть следующая проблема:

Я хочу передать данные из ввода window.prompt Sweetalert Box на сервер. Но у меня есть проблема, потому что я не знаю, ЧТО - это ТИП данных окна сладкого предупреждения window.prompt.

Посмотрите ниже, что я имею в виду: у меня есть следующее script

function save3() {
      var id;
      var pn = 4; 
      var pososto = 5;
      var a1 = 3;
      var a2 = 2;
      var flag1 = true;

      swal("Give the User Id:", {
      input: "text",
      content: "input"
})
.then((value) => {
  //swal(`You typed: ${value}`);
  // Do stuff with value

    id = parseInt(value);
    if (id) {
        console.log("Is a number");
    } else {
        console.log("Is not a number");
    }
    return id;
}).then(id => {
    sendToServer(id);
});

function sendToServer() {
  // Implement send to server ajax request logic...
      $("#user_id").val(id)
      $("#book_id").val(a2)
      $("#game_id").val(a1)
      $("#percent_id").val(pososto)
      $("#site_id").val(pn)
     swal("nai!!!!!!!!!!!!!!!!!!", "Great! The game has been saved", "success");
}
}

Как вы можете видеть, когда пользователь нажимает на кнопку, появляется окно сладкого оповещения window.prompt, в котором пользователь просит указать идентификатор пользователя, который должен быть только числом. Я пытался преобразовать строковые данные в число с помощью функции parseInt, но это не работает. Странно то, что с классическим window.prompt он работает нормально. У вас есть идеи?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

У вас могут быть проблемы с пониманием того, как работают обещания. У вас будет доступ к значению окна сладкого оповещения внутри then, как и у вас. Вся ваша логика должна быть частью потока Обещаний. Вы также можете продолжать цепочку, а затем выполнять обратные вызовы для дополнительной логики с вашими данными. Например:

swal("Give the User Id:", {
      input: "text",
      inputPlaceholder: 'Enter your password',
      content: "input"
})
.then((value) => {
  swal(`You typed: ${value}`);
    // Do stuff with value

    const id = parseInt(value);
    if (id) {
        console.log("Is a number");
    } else {
        console.log("Is not a number");
    }
    return id;
}).then(id => {
    sendToServer(id);
});

function sendToServer() {
  // Implement send to server ajax request logic...
}
0 голосов
/ 01 ноября 2018

Вы не сможете вызвать ParseInt ("значение"), значение будет неопределенным, если оно не находится внутри блока .then () вашего кода, попробуйте что-то вроде этого:

.then((value) => {
  swal(`You typed: ${value}`);
  var a = parseInt(value);
});

Однако, вероятно, тип ввода будет строкой, поэтому parseInt не будет работать, вы можете попробовать сделать:

.then((value) => {
  swal(`You typed: ${value}`);
  console.log(typeof(value))
});

Это должно вернуть тип значения.

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

Lloyd

...