Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqueryasync:false和Firefox_Jquery_Ajax_Firefox - Fatal编程技术网

jqueryasync:false和Firefox

jqueryasync:false和Firefox,jquery,ajax,firefox,Jquery,Ajax,Firefox,当用户单击一个链接时,我想进行一个ajax调用,并在重定向用户之前等待调用完成。最初,我使用了preventDefault()和window.location来获得结果,但这阻止了用户执行Ctrl+Click(新建选项卡) 所以我最终做了这件事,但由于某些原因,Firefox中从未进行过ajax调用: $('a.item-link').on('click', function(e){ $.ajax({ url: "http://123.456.789.012/c",

当用户单击一个链接时,我想进行一个ajax调用,并在重定向用户之前等待调用完成。最初,我使用了
preventDefault()
window.location
来获得结果,但这阻止了用户执行Ctrl+Click(新建选项卡)

所以我最终做了这件事,但由于某些原因,Firefox中从未进行过ajax调用:

$('a.item-link').on('click', function(e){
    $.ajax({
        url: "http://123.456.789.012/c",
        type: 'GET',
        data: {
            'userId'   : '1234'
        },
        dataType: 'jsonp',
        async: false,
        cache: false,
        timeout: 1500
    });

    return true;
});
你知道我如何在Firefox中进行同步调用吗?

感谢您的帮助。

将您的元素设置为按钮,在ajax调用完成之前不要进行重定向。如果通话前按下ctrl键,则在新窗口中打开

将元素设为按钮,在ajax调用完成之前不要进行重定向。如果通话前按下ctrl键,则在新窗口中打开

将元素设为按钮,在ajax调用完成之前不要进行重定向。如果通话前按下ctrl键,则在新窗口中打开

将元素设为按钮,在ajax调用完成之前不要进行重定向。如果通话前按下ctrl键,则在新窗口中打开

多亏了@JeffB和@bobber205,我终于做到了:

$('a.item-link').on('click', function(e){
    if(e.ctrlKey){
        var newTab = true;
    } else {
        e.preventDefault();
        var _this = this;
        var newTab = false;
    }

    $.ajax({
        url: "http://123.456.789.012/c",
        type: 'GET',
        data: {
            'userId'   : '1234'
        },
        dataType: 'jsonp',
        cache: false,
        timeout: 1500,
        success: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        },
        error: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        }
    });

    if(newTab){
        return true;
    }
});
我只是检查在单击过程中是否按下了
ctrl
键并采取了相应的操作


谢谢你的提示,专家们。有时候,最简单的想法需要别人提醒。这是一个很棒的社区

多亏了@JeffB和@bobber205,我终于做到了:

$('a.item-link').on('click', function(e){
    if(e.ctrlKey){
        var newTab = true;
    } else {
        e.preventDefault();
        var _this = this;
        var newTab = false;
    }

    $.ajax({
        url: "http://123.456.789.012/c",
        type: 'GET',
        data: {
            'userId'   : '1234'
        },
        dataType: 'jsonp',
        cache: false,
        timeout: 1500,
        success: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        },
        error: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        }
    });

    if(newTab){
        return true;
    }
});
我只是检查在单击过程中是否按下了
ctrl
键并采取了相应的操作


谢谢你的提示,专家们。有时候,最简单的想法需要别人提醒。这是一个很棒的社区

多亏了@JeffB和@bobber205,我终于做到了:

$('a.item-link').on('click', function(e){
    if(e.ctrlKey){
        var newTab = true;
    } else {
        e.preventDefault();
        var _this = this;
        var newTab = false;
    }

    $.ajax({
        url: "http://123.456.789.012/c",
        type: 'GET',
        data: {
            'userId'   : '1234'
        },
        dataType: 'jsonp',
        cache: false,
        timeout: 1500,
        success: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        },
        error: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        }
    });

    if(newTab){
        return true;
    }
});
我只是检查在单击过程中是否按下了
ctrl
键并采取了相应的操作


谢谢你的提示,专家们。有时候,最简单的想法需要别人提醒。这是一个很棒的社区

多亏了@JeffB和@bobber205,我终于做到了:

$('a.item-link').on('click', function(e){
    if(e.ctrlKey){
        var newTab = true;
    } else {
        e.preventDefault();
        var _this = this;
        var newTab = false;
    }

    $.ajax({
        url: "http://123.456.789.012/c",
        type: 'GET',
        data: {
            'userId'   : '1234'
        },
        dataType: 'jsonp',
        cache: false,
        timeout: 1500,
        success: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        },
        error: function(){
            if(!newTab){
                window.location = $(_this).prop('href');
            }
        }
    });

    if(newTab){
        return true;
    }
});
我只是检查在单击过程中是否按下了
ctrl
键并采取了相应的操作


谢谢你的提示,专家们。有时候,最简单的想法需要别人提醒。这是一个很棒的社区

为什么您希望AJAX是
异步的:false
??这就是Ajax的全部目的,为什么不按下[code>Ctrl键,就只执行
preventDefault()
?我有没有其他方法来执行调用、重定向用户以及在按住Ctrl+Click键时仍然有效?正如我所说,preventDefault和window.location破坏了用户体验。FireFox以何种方式受到影响?“跨域请求和
数据类型:“jsonp”
请求不支持同步操作。”()根据定义,jsonp是异步的,因为它需要加载一个新的
元素。为什么您希望AJAX是
异步的:false
??这就是Ajax的全部目的,为什么不按下[code>Ctrl键,就只执行
preventDefault()
?我有没有其他方法来执行调用、重定向用户以及在按住Ctrl+Click键时仍然有效?正如我所说,preventDefault和window.location破坏了用户体验。FireFox以何种方式受到影响?“跨域请求和
数据类型:“jsonp”
请求不支持同步操作。”()根据定义,jsonp是异步的,因为它需要加载一个新的
元素。为什么您希望AJAX是
异步的:false
??这就是Ajax的全部目的,为什么不按下[code>Ctrl键,就只执行
preventDefault()
?我有没有其他方法来执行调用、重定向用户以及在按住Ctrl+Click键时仍然有效?正如我所说,preventDefault和window.location破坏了用户体验。FireFox以何种方式受到影响?“跨域请求和
数据类型:“jsonp”
请求不支持同步操作。”()根据定义,jsonp是异步的,因为它需要加载一个新的
元素。为什么您希望AJAX是
异步的:false
??这就是Ajax的全部目的,为什么不按下[code>Ctrl键,就只执行
preventDefault()
?我有没有其他方法来执行调用、重定向用户以及在按住Ctrl+Click键时仍然有效?正如我所说,preventDefault和window.location破坏了用户体验。FireFox以何种方式受到影响?“跨域请求和
数据类型:“jsonp”
请求不支持同步操作。”()根据定义,jsonp是异步的,因为它需要加载一个新的
元素。