【问题标题】:jQuery / Ajax: How to call function on targeted page after redirectjQuery / Ajax:重定向后如何在目标页面上调用函数
【发布时间】:2015-06-30 04:52:54
【问题描述】:

我是 Ajax 和一般编程的新手,希望有人可以帮助我。

我在登录页面上使用以下内容。 这用于注册新用户,如果注册成功,将自动将他们转发到索引页面。

到目前为止,一切都按预期工作。 如何从这个或之后在目标索引页面上调用 jQuery 函数? 我要做的是向用户显示一个警报,告诉他们他们在成功注册后自动登录 - 所以 只有当有人从登录页面重定向到索引页面时,此警报才会显示在索引页面上强>。

我可以扩展下面的链接以传递一个变量(例如“&origin=login”),然后使用 PHP 在索引页面上处理它,但这似乎是一个很大的解决方法,我想知道这是否可以实现更容易使用 Ajax。

我做了一些研究,发现了一些对 Ajax 的引用,但没有明确的指导方针。
有人可以帮我吗?

我的 Ajax(在 jQuery 中):

case 'registration successful':     
    $.ajax({        
        type: "post",   
        url: "ajax.php",
        cache: "false",
        data: {
            node: 'loginUser',
            email: email,
            pass: pass
        },
        success: function(data){
            // redirect to index page
            window.location.href = baseURL + '/index.php?lang=' + selectedLang;
            // after the redirect I would like to show an alert on the targeted index page
        }
    });
    break;

提前非常感谢, 迈克

【问题讨论】:

  • 为什么不在 window.location.href 之前添加警报?
  • 谢谢。在这种情况下,我需要等待重定向,直到有人关闭警报。我该怎么做?我之前也想过这个问题,但是由于我使用自定义模式来发出警报(并且模式用于不同的页面),这对我来说似乎也很棘手。
  • @GuruprasadRao:谢谢。我是 JS 新手。您能否解释一下“localStorage”的含义以及如何使用它?
  • 尝试在你的 window.location.href 之前在成功回调函数中添加一个警报并尝试它:)
  • @jameshwartlopez:谢谢。我不能在当前页面上使用这种方法。请查看我上面的更新评论。

标签: javascript jquery ajax redirect location


【解决方案1】:

如果我正确理解您的问题,您可以使用localStorage 在重定向后显示alert,如下所示:

$.ajax({        
        type: "post",   
        url: "ajax.php",
        cache: "false",
        data: {
            node: 'loginUser',
            email: email,
            pass: pass
        },
        success: function(data){
            //set a localStorage item
            localStorage.setItem('showAlert','true');
            // redirect to index page
            window.location.href = baseURL + '/index.php?lang=' + selectedLang;
            // after the redirect I would like to show an alert on the targeted index page
        }
});

并在您的index 页面中,在script 标记或任何已加载的js 文件中写入以下代码:

$(document).ready(function(){
    var showalert=localStorage.getItem('showAlert');
    if(showalert==='true')
    {
          //show the alert
          localStorage.setItem('showAlert','false'); //set its value back to false;
    }
});

关于localStorage

的一点解释
  • 它存储的数据没有过期日期。
  • 本地存储更安全,可存储大量数据 本地,而不影响网站性能。

更新

对于您当前的要求,sessionStorage 可能非常适合您,因为您只想在用户登录时存储数据并希望在他注销时清除它。用法类似于localStorage,而不是localStorage.getItemlocalStorage.setItem你可以使用sessionStorage.setItemsessionStorage.getItem

那么这是什么sessionStorage

sessionStorage 对象作为窗口对象的属性存在于 支持浏览器(目前为 Firefox 3+、Safari 4+ 和 Internet 探险家 8+)。您可以将数据放在 sessionStorage 对象上,然后 只要该窗口(或选项卡)打开,该数据就会持续存在。甚至 如果您离开存储数据的页面,然后 向后导航,保存到 sessionStorage 的数据仍然可用。 sessionStorage 中存储的任何数据都与协议、主机名、 保存信息的页面的端口和端口,仅共享页面 以后可以使用相同的协议、主机名和端口访问该数据。

你可以阅读更多关于sessionStorage here

【讨论】:

  • 非常感谢 - 这正是我在这里寻找的!以前从未听说过。 :) 会玩它,但这应该可以解决问题。再次感谢!
  • 任何时候.. 快乐编码.. :)
  • 谢谢。在阅读完这篇文章后,我想我什至可以在这种情况下使用“window.sessionStorage”。不确定这是否有很大的不同,但我在会议结束后不需要它,所以这听起来足够了。谢谢你给我看这个。
  • 是的!您也可以使用sessionStorage 来满足此要求! :) 我会用解释更新我的答案.. :)
  • 是的……更新了答案!如果您更感兴趣,请检查并访问该链接.. :)
【解决方案2】:

您可以在 JS 中读取查询字符串(您不必为此使用 PHP)。

我以前用过这个功能:

function GetQueryStringParams(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) 
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) 
        {
            return sParameterName[1];
        }
    }
}

使用 localStorage 可能会导致在旧浏览器中出现问题。如果您必须避免使用查询字符串,我建议您使用 cookie。

this should show you how

【讨论】:

  • 非常感谢 - 这也很有帮助!现在,我将坚持使用 localStorage 方法,但投票支持这一方法,并且一定会牢记这一点。 :)
【解决方案3】:
        you can use query string as well for this purpose
        case 'registration successful':     
            $.ajax({        
                type: "post",   
                url: "ajax.php",
                cache: "false",
                data: {
                    node: 'loginUser',
                    email: email,
                    pass: pass
                },
                success: function(data){
                    // redirect to index page
                    window.location.href = baseURL + '/index.php?lang=' + selectedLang+'&msg=true';
                    // after the redirect I would like to show an alert on the targeted index page
                }
            });
            break;
    ---------------------
On index page get value from url
$(document).ready(function(){
    var msg=window.location.toString().Split('msg')[1];
    if(msg)
    {
          alert("Welcome....");
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2014-01-19
    • 2011-08-18
    • 2018-04-17
    • 2011-12-17
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多