当JQuery使用$ .ajax加载内容时避免登录弹出窗口
问题描述:
我有一个index.html,它使用3个不同的$.load(...)
查询加载3个内容块。 当我使用基本的HTTP身份验证时,请求登录和传递4次。 1在页面加载,1为每个内容。
如何保持登录状态,不通过$.load url?
(出于安全目的)。
<div id="header"></div>
<div id="maindiv"></div>
<div id="footer"></div>
<script type="text/javascript">
$(document).ready(function() {
$("#header").load("?cmd=header");
$("#maindiv").load("?cmd=viewconfig");
$("#footer").load("?cmd=footer");
});
</script>
答
您应修改为401 HTTP状态代码而不是授权HTTP标题的响应。然后您可以捕获这些响应并显示您自己的登录对话框弹出窗口。
在我的例子中,所有的JQuery Ajax调用结果的状态进行检查的401码和第一次出现将显示对话框:
var loginFormShown = false;
$.ajaxSetup({
statusCode: {
401: function(xhr) {
if(!loginFormShown) {
console.log('Show login form popup', xhr.responseText);
loginFormShown = true;
}
}
}
});
$(document).ready(function() {
$("#header").load("?cmd=header");
$("#maindiv").load("?cmd=viewconfig");
$("#footer").load("?cmd=footer");
});
你说的HTML验证是什么意思? – Hulothe
我的不好,我的意思是基本的http验证。我会修好它。 –
客户端无法控制所述弹出窗口。 javascript不能让它停止。 –