Ajax和jquery重定向

时间:2011-12-28 14:46:51

标签: jquery ajax redirect notifications

大家好,我有一个jquery脚本来提交表单,如果成功,它会重新发送json输出。

function subscribe(email, city){
    var email = $('input#email').val();
    var city = $('select#citySelect').val();

    $.ajax({
        url: 'http://www.amazingvouchercodes.co.uk/avc_dev/subscribe/subscribeTo',
        type: 'post',
        data: 'email='+email+'&city='+city,
        dataType: 'json',
        success: function(json){
            window.location.href = json['url'];
            $('#notifications').append('<div class="success">'+json['success']+'</div>');
        }
    }); 
}

我遇到的问题是它正在显示通知&gt; json成功重定向之前重定向通知没有显示,有没有办法在重定向后显示通知?

感谢所有帮助表示赞赏:)

3 个答案:

答案 0 :(得分:0)

您必须执行类似window.location.href = json['url'] + "?redirMsg=Foo+Bar";的操作,并在您的网页上检查查询字符串中是否有redirMsg,如果是,请提醒您的通知。

答案 1 :(得分:0)

您是说您希望成功功能导致重定向,然后更新您重定向到的页面上的某些内容?

如果是这样,你需要做一点不同的事情。您重定向到的页面将不会继续执行在此第一页上开始执行的javascript。

一个选项是附加一个查询字符串变量来告诉下一页要更新。如:

window.location.href = json['url'] + "?msg=success";

然后在下一页上,它将检查该querystring变量,并进行更新(如果存在)。

在下一页上,您可以添加以下内容:

function getFromQuery(name){
   if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
      return decodeURIComponent(name[1]);
}

if (getFromQuery("msg")=="success")
{
//do your update here
$('#notifications').append('<div class="success">'+json['success']+'</div>');
}

答案 2 :(得分:0)

像AlienWebguy建议的那样,

这是因为您正在加载新页面,因此任何JavaScript都会重置。

我认为最好的方法是在你的布局/标题中设置一个元素集,在屏幕顶部显示消息(比如这个网站如何通知橙色栏中的某些内容),如果还有待处理的话。因此,在Ajax页面上,您可以设置通知(会话/ cookie)变量。然后下一次页面加载(重定向后),布局将知道有一个待通知的通知,它会在布局/标题中显示它并清除它(所以它只显示一次。)