当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> 
+1

你说的HTML验证是什么意思? – Hulothe

+0

我的不好,我的意思是基本的http验证。我会修好它。 –

+1

客户端无法控制所述弹出窗口。 javascript不能让它停止。 –

您应修改为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"); 
});