第二个Ajax调用(跨浏览器)

我有

<a href="url" onclick="var msg = confirm('Confirm?'); submit(msg, event);">Click me</a>

我想要做的是接受确认框的结果(true / false),将它传递给提交按钮,然后杀死href调用,如果它的false。

我在开发环境中工作,但是当我将其加载到跨浏览器场景中时,第二个调用不起作用:

function submit(msg, evt) {

     if(msg == true) {
         $.ajax({
             type:"POST",
             data:{answer:'Correct'},
             url:'https://myurl/p'
          });
     }
     else { evt.preventDefault(); return false; }
}

传递的URL只是URL,没有数据(在生产中)。 这个确切的代码在我的环境中工作得非常好,但是在跨浏览器的情况下它失败了。 如果我删除确认框,则一切正常。

我有一种感觉,它与取消确认框中的preventDefault调用绑定。 这将阻止默认禁用下一个呼叫与相同的链接?


首先,请不要使用内联事件处理程序,您可以将其从标记中删除,并在它所属的js中处理:

HTML:

<a href="url" id="myanchor">Click me</a>

JS:

anchor = $('#myanchor')[0];
anchor.on('click',function(){
    var msg = confirm('Confirm?'); 
    submit(msg, event);
});

其次,如果msg为真,则ajax调用立即被页面重定向中断,这没有多大意义。 我相信你希望重定向发生在ajax调用完成之后,在这种情况下你应该使用:

function submit(msg, evt) {

     if(msg == true) {
         $.ajax({
             type:"POST",
             data:{answer:'Correct'},
             url:'https://myurl/p',
             complete: function(){window.location="url";}
          });
     }
     evt.preventDefault();
     return false;
}

<a href="url" ID="myUrlID">Click me</a>

$(function(){
    $("#myUrlID").click(function(event){
        event.preventDefault();

        var msg = confirm('Confirm?');

        if(msg == true) {
            $.ajax({
                type:"POST",
                data:{answer:'Correct'},
                url:'https://myurl/p'
            });
        }
    });
});
链接地址: http://www.djcxy.com/p/71703.html

上一篇: Ajax call in second (cross browser)

下一篇: How to preventDefault on anchor tags?