Isamtron
Isamtron

Reputation: 623

$.ajax working with Firefox, not IE

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:"/login"});
            event.preventDefault();
        }
    });
});
</script>

<? endif ?>

Your help would be greatly appreciated.

Upvotes: 0

Views: 182

Answers (2)

Alec
Alec

Reputation: 9078

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
    }
  }
});

Upvotes: 0

Justin Ethier
Justin Ethier

Reputation: 134255

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
    })

Upvotes: 1

Related Questions