Sweet Alert window.prompt将该值传递到服务器

时间:2018-11-01 08:57:52

标签: javascript php sweetalert

我有以下问题:

我想将数据从 window.prompt sweetalert框的输入传递到服务器。但是我有一个问题,因为我不知道甜蜜警报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甜蜜警报框,并要求用户提供用户ID,该ID应该仅为数字。我尝试使用函数parseInt将字符串数据转换为数字,但是它不起作用。奇怪的是,使用经典的window.prompt可以正常工作。你有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您将无法调用ParseInt(“ value”),如果不在代码的.then()块中,则该值将是未定义的,请尝试执行以下操作:

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

但是,输入类型似乎是字符串,因此parseInt无法正常工作,您可以尝试执行以下操作:

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

这应该返回值的类型。

希望这会有所帮助!

劳埃德

答案 1 :(得分:0)

您可能在理解诺言如何运作时遇到问题。您将可以像以前一样访问then内甜蜜警报框的值。您所有的逻辑都需要作为Promise流的一部分。您还可以保持链接然后进行回调,以对数据进行其他逻辑处理。例如:

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...
}