Javascript 成功调用ajax后的以下链接href

Javascript 成功调用ajax后的以下链接href,javascript,ajax,jquery,Javascript,Ajax,Jquery,我有一个正常的链接: <a href="http://www.google.com" class="continue">Continue</a> 我试图实现的是成功时要遵循的链接…… 也就是说,若并没有错误,用户应该被重定向到谷歌 我知道我可以将window.location.href放在成功处理程序中,但如果可能的话,我试图避免这种情况您是否尝试过类似的方法: $('.continue').click(function () { $.ajax({

我有一个正常的链接:

<a href="http://www.google.com" class="continue">Continue</a>
我试图实现的是成功时要遵循的链接……
也就是说,若并没有错误,用户应该被重定向到谷歌


我知道我可以将
window.location.href
放在成功处理程序中,但如果可能的话,我试图避免这种情况

您是否尝试过类似的方法:

$('.continue').click(function () {

    $.ajax({
        type: 'POST',
        url: '/url-to-post-to',
        data: mydata,
        contentType: 'application/json',
        error: function (err) {
            alert("error - " + err);
        },
        success: function () {
            return true;
        }
    });
});
$('.continue').click(function(e) {
    e.preventDefault();
    var link = $(this).attr('href');

    $.ajax({
        type: 'POST',
        url: '/url-to-post-to',
        data: mydata,
        contentType: 'application/json',
        error: function (err) {
            alert("error - " + err);
        },
        success: function () {
            window.location.href = link; // <-- This line
        }
    });
});
$('.continue')。单击(函数(e){
e、 预防默认值();
var link=$(this.attr('href');
$.ajax({
键入:“POST”,
url:“/url要发布到”,
数据:mydata,
contentType:'应用程序/json',
错误:函数(err){
警报(“错误-”+错误);
},
成功:函数(){
window.location.href=link;//您可以试试这个

     $('.continue').click(function () {
   $.ajax({
    type: 'POST',
    url: '/url-to-post-to',
    data: mydata,
    contentType: 'application/json',
    error: function (err) {
        alert("error - " + err);
    },
    success: function () {

       $(location).attr('href',$(this).attr('href'));
    }
  });
  return false;
 });
不幸的是(在您的例子中),ajax是异步的,这意味着您的click函数启动ajax调用,然后继续运行,而不关心它做了什么(因此在最后什么也不返回)

success函数稍后调用(当ajax成功返回时),它是一个完全不同的函数,因此它的返回
true
与原始的click函数没有关系

总而言之,您需要使用javascript来覆盖锚定标记的自然行为(直接转到google.com)以及随后发生的事情(重定向)


如果我们真的需要在这里“点击”,我们应该新触发点击事件,并允许它在第二次点击时返回true

$('.continue').click(function () 
{
    if ($(this).attr('tracked')!=undefined)
    {
        return true;
    }
    a = $(this);
    $.ajax({
        type: 'POST',
        url: '/url-to-post-to',
        data: mydata,
        contentType: 'application/json',
        error: function (err) {
            alert("error - " + err);
        },
        success: function () {
            $(this).attr('tracked',true);
            $(a)[0].click();
        }
    });
});

-1…我在问题中特别提到了这是我试图避免的???-1…因为你没有阅读28分钟前的编辑吗???@snumpyI没有测试代码,所以我忘记了preventDefault(),它只是一个想法,并复制了意大利面。更新和测试了(没有小提琴,因为ajax请求)
$('.continue').click(function () 
{
    if ($(this).attr('tracked')!=undefined)
    {
        return true;
    }
    a = $(this);
    $.ajax({
        type: 'POST',
        url: '/url-to-post-to',
        data: mydata,
        contentType: 'application/json',
        error: function (err) {
            alert("error - " + err);
        },
        success: function () {
            $(this).attr('tracked',true);
            $(a)[0].click();
        }
    });
});