【发布时间】: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