Ajax和jquery重定向

Ajax和jquery重定向,jquery,ajax,redirect,notifications,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/subscrib

大家好,我有一个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>');
        }
    }); 
}
功能订阅(电子邮件、城市){
var email=$('input#email').val();
var city=$('select#citySelect').val();
$.ajax({
网址:'http://www.amazingvouchercodes.co.uk/avc_dev/subscribe/subscribeTo',
键入:“post”,
数据:“电子邮件=”+电子邮件+”&城市=”+城市,
数据类型:“json”,
成功:函数(json){
window.location.href=json['url'];
$(“#通知”).append(“”+json['success']+“”);
}
}); 
}
我的问题是,它在重定向后的重定向之前显示notification>json success通知没有显示,有没有办法在重定向后显示通知

感谢您的帮助:)


Joe

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

您是说希望success函数导致重定向,然后更新重定向到的页面上的内容吗

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

一个选项是附加一个querystring变量来通知下一个页面进行更新。例如:

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>');
}
函数getFromQuery(名称){ if(name=(新的RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)).exec(location.search)) 返回组件(名称[1]); } if(getFromQuery(“msg”)=“success”) { //请在这里更新 $(“#通知”).append(“”+json['success']+“”); }
就像AlienWebguy建议的那样

这是因为您正在加载一个新页面,所以任何JavaScript都会被重置


我认为最好的方法是在布局/标题中设置一个元素,在屏幕顶部显示消息(如此站点如何在橙色栏中通知您一些消息),如果有消息等待处理。因此,在Ajax页面上,您设置了一个通知(会话/cookie)变量。然后下次加载页面时(重定向后),版面会知道有一个通知挂起,它会在版面/页眉中显示并清除它(因此只显示一次)。

您使用的是哪种服务器端框架?如果您的平台支持的话,它听起来像是flash scope的完美用例。我喜欢这种方法的声音,我对jquery和jscript很陌生。您能给我一些如何做的信息,或者给我一些阅读材料:)@JoeElliott这实际上是您将使用服务器端语言(如PHP)而不是JavaScript实现的东西。正如您在评论中建议的wrschneider99,如果您使用的是服务器端框架(如CakePHP、RoR),大多数都已经内置了此框架。我使用codeigniter,会话flash消息或其他东西也是如此:)我从未使用过CI,我肯定他们有,只是不确定它的名称。因此,您可能只需要查看文档。我用过CakePHP,它在会话组件上使用了一个名为
setFlash
的方法,你给它传递一条消息,它会处理其余的事情(只要你的布局设置为显示flash消息。)收到了,谢谢你给我指出了正确的方向先生:)祝你愉快:)