【问题标题】:Opening a page popup on ajax success在ajax成功时打开页面弹出窗口
【发布时间】:2016-07-26 10:20:46
【问题描述】:

我正在做一个项目,但我遇到了 window.open 的问题。问题是 window.open 在我的架构中不起作用。我需要这方面的帮助,

swal({
    title: "Submit Data ?",
    text: "Process only if you are sure",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Yes, Submit!",
    cancelButtonText: "No, Cancel!",
    closeOnConfirm: false,
    closeOnCancel: false
},
function(isConfirm){
    if (isConfirm) {
        insertData();
        swal("SUCCESS", "Data Has Been Submitted", "success");
        window.open("http://188.109.156.21/execution.php?str=james");
    } else {
        swal("CANCELLED", "", "error");
    }
});

function insertData(){
    $.ajax({
        type: 'POST',
        url: "../../../html/main/divpages/submit_data.php",
        data: sentReq,
        dataType: 'JSON',
        success: function (response, textStatus, jqXHR) {
            if (response.indexOf("GAGAL") == -1) {
                window.location.href = "main.php";
            } else {
                alert("GAGAL INSERT");
            }
        }
    });
}

所以我可以毫无问题地执行 insertData()。但是问题在于在 swal() 中执行 windows.open 时。我没有看到任何弹出窗口正在打开。

【问题讨论】:

  • 你永远不会在任何地方打电话给swal。能否请您告诉我们该函数的作用?
  • @MatthewHerbst t4t5.github.io/sweetalert
  • @MisterM 有帮助,谢谢!

标签: javascript java php mysql


【解决方案1】:

这是浏览器使用的弹出窗口阻止逻辑。您必须直接在 onClick 事件上附加 window.open。

使用这样的东西:

var checkSuccess = false;

$('#button').on("click", function(){
    $.ajax({
      type: 'POST',
      url: "your url",
      async:false,
      success: function(){ 
         checkSuccess = true;
         //YOUR LOGIC
      }
    });
    if(checkSuccess){
      window.open("http://188.109.156.21/execution.php?str=james");
    }
})

【讨论】:

  • 实际上所有这些都在函数 submitData() 中,触发器是 跨度>
  • 您必须在单击操作期间直接使用 window.open,否则很可能浏览器会阻止它。然后在 ajax 成功后,您可以更改其位置。
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多