场景.
>用户登录我的网站 – cookie设置,服务器超时30分钟
>用户离开30分钟
>用户回来并点击我的一个启用了AJAX的jquery选项卡
>请求发送到服务器
>服务器发送nope用户超时将其发送回登录页面.
>因为它是一个AJAX请求,重定向会在选项卡中呈现.它看起来很丑陋(在标签中呈现整个页面),用户可能在这一点上非常困惑.
问题
>就服务器和AJAX而言,AJAX请求有效并且成功响应被发回.所以我无法检查错误,因为请求成功,而不是正确的数据回来.
解决方案1
>用户登录网站.
> Jquery AJAX请求查找用户超时
>超时比服务器超时少60秒
>一旦JavaScript端超时被击中.出现Jquery对话框并告诉他们他们的会话已过期并强制他们重定向到登录包.
>用户无法单击任何内容,因为对话框会阻止该 *** 作.如果某些用户使用fireBUG或者他们可以移除它,但服务器超时仍然会生效,他们将获得丑陋的版本(不要在意).
>如果用户发出AJAX请求,则重置服务器端的超时以及客户端的超时.
问题
>用户可以走开,另一个人可能会来,超时消息可能会启动,但他们仍有可能有45秒的时间尝试发出新请求并重置超时.这非常低,并不太担心.
>有时我观察到它只是超时(客户端)而我不知道为什么.我永远无法重现问题(似乎发生在其他人身上,但在我测试时却没有).所以我猜测有些东西没有写入或其他出错的地方.
所以2号真的是我想找到另一个解决方案的重要原因.
解决方案2(推测).
我想也许如果我可以制作我自己的响应标题或者其他什么,如果服务器超时那么我可以发送一些303重定向或我可以检查的那种性质的东西然后根据它进行jquery重定向.
但是我不知道在我的C#代码中该怎么做,或者我可以做那样的事情.
解决方法 您可以随时在logon *** 作中添加自定义http标头,该标头可以被AJAX调用拦截并相应地执行 *** 作:public ActionResult logon(){ response.addheader("X-logoN","logon"); return VIEw();}
并且在成功回调检查是否存在此标头:
$.AJAX({ url: '/home/someaction',success: function (data,textStatus,XMLhttpRequest) { if (XMLhttpRequest.getResponseheader('X-logoN') === 'logon') { // the logon page is being displayed // probably timeout or unaithorized => act accordingly } }});总结
以上是内存溢出为你收集整理的c# – 你如何克服这个问题? Jquery ajax服务器超时全部内容,希望文章能够帮你解决c# – 你如何克服这个问题? Jquery ajax服务器超时所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)