I have a jQuery code to allow users to login using a lightbox (http://colorpowered.com/colorbox/) and immediately start downloading files, without being redirected or having the page reloaded. It's perfectly working in Firefox but Internet Explorer keeps showing the login box until I reload the page :(
<? if (!$this->session->userdata('user_logged_in')): ?>
<script type="text/javascript">
$(document).ready(function() {
$('a[href^="/link/"]').click(function(event){
var status = $.ajax({
url: "/status",
async: false
}).responseText;
if (status != 'USER_LOGGED_IN')
{
$.fn.colorbox({href:"/l开发者_StackOverflow社区ogin"});
event.preventDefault();
}
});
});
</script>
<? endif ?>
Your help would be greatly appreciated.
The problem is that by default jQuery.ajax retrieves data using GET requests, which are being cached by IE. You can fix this by telling the browser to not cache AJAX results:
$.ajax({
url: "/status",
async: false,
cache: false
})
If the variable status
is checked before it was set by the $.ajax part, it will keep sending you to the login screen. Try checking the status after it was successfully retrieved, like so:
$.ajax({
url: '/status',
async: false,
success: function(status) {
if (status != 'USER_LOGGED_IN') {
// etc
}
}
});
精彩评论