【问题标题】:Get current DOM element获取当前 DOM 元素
【发布时间】:2017-10-12 09:58:39
【问题描述】:

我有一个正常运行的网站,其中包含一个搜索功能,该功能通过 jQuery $.ajax 调用将结果加载到 <div> 元素中,如下所示:

$.ajax({
    url:        '{{ path('order_search') }}',
    type:       $(this).attr('method'),
    data:       $('#search_form').serialize(),
    success:    function (data) {
        $('#js-search-results').html(data);
    }
});

我正在使用 symfony 项目中的 twig 模板,因此使用了 url 表示法。这是完美的工作。

这是一个需要登录的网站。我在 symfony 中有一个事件侦听器,它检查每个内核请求的不活动时间段(取自 here),如果不活动时间段超过 maxIdleTime,则用户将被重定向到登录页面。

我的问题是,如果用户一段时间不活动,然后进入搜索,js-search-results div 会被登录页面填充。我想要发生的是让整个窗口重定向到登录页面。看起来很简单,但我还没想好怎么做。

我想处理的一个问题是让我的登录页面脚本检查它是否被加载到整个窗口(而不仅仅是一个 div 元素),如果没有,则刷新整个窗口。如何做到这一点?

【问题讨论】:

  • 如果用户没有登录,'{{ path('order_search') }}' 的后端代码应该返回一个错误,那么$.ajax 应该有一个错误处理程序来将页面重定向到login 在这种情况下错误 - 或者,成功函数应该检查 data 是什么,而不是盲目地假设它是有效的搜索响应
  • 两者都是好主意。谢谢。

标签: javascript jquery symfony


【解决方案1】:

您可以检查变量“data”中的内容以检查它是否包含来自登录页面的元素,然后使用 if else 语句。

if(data.includes("username") && data.includes("password")){
  window.location.assign("https://your.login.page.html");
}else{
  $('#js-search-results').html(data);
}

【讨论】:

  • 完美。谢谢!
【解决方案2】:

听起来您想知道那里有什么类型的数据,如果是登录页面,请进行重定向。

找出data 是否包含登录页面中的元素。如果是 window.location.href = "/login" 如果不在 div 中显示搜索结果。从后端发送数据,例如 {page : "login"}

【讨论】:

  • 是的。你和@Ankit 都明白了。
猜你喜欢
  • 2016-08-02
  • 2010-11-23
  • 1970-01-01
  • 2016-06-16
  • 2015-03-05
  • 2013-09-10
  • 2012-08-04
  • 2016-11-18
  • 2013-03-01
相关资源
最近更新 更多