2016-05-03 5 views
0

Я использую следующий код, чтобы пользователь мог войти в Magneto с помощью AJAX. Если введено правильное имя пользователя и пароль, страница обновится и отобразит пользовательскую навигационную панель в заголовке. Поле работает в Firefox, Safari и IE, но не в Chrome. Мне нужно обновить страницу для отображения навигационной панели.`window.location.reload` не перезагружает страницу в Chrome

Зачем возникает эта проблема?

Код:

AjaxLoginForm.submit = function(button){ 
    if (this.validator.validate()) { 
     // show ajax image 
     // button.insert({"after":osc_ajax_loading_small}); 
     AjaxLoginForm.hideLoader(); 
     AjaxLoginForm.insertLoader(button); 

     $("ajaxlogin_form").request({ 
       onSuccess: function(transport) { 
        var json = transport.responseText.evalJSON(); 

        if(json.is_forgot_pwd){ 
         if(json.success){ 
          $("ajaxlogin_form_message").update("<div>"+json.success_message+"</div>"); 
          $("ajaxlogin_form_message").show(); 
         } 
         if(json.error){ 
          $("ajaxlogin_form_message").update("<div>"+json.error_message+"</div>"); 
          $("ajaxlogin_form_message").show(); 
         } 
        }else{       
         if(json.success){ 
          // If the correct username and password is entered 
          // the page will refresh and display user navbar 
          // in the header 
          window.location.reload(); 
         } 
         if(json.error){ 
          $("ajaxlogin_form_message").update("<div>"+json.error_message+"</div>"); 
          $("ajaxlogin_form_message").show(); 
         } 
        } 
        AjaxLoginForm.hideLoader(); 
        //setTimeout("AjaxLoginForm.hideResponseMessage()", 5000); 
       } 
     }); 

    } 
}.bind(AjaxLoginForm); 
+0

Попробуйте добавить параметр 'true' в параметр' reload'. https://developer.mozilla.org/en-US/docs/Web/API/Location/reload – dlopez

+0

@dlopez Проблема не разрешается добавлением 'true' в метод' reload'. –

+0

Кажется, что у других людей была такая же проблема, и есть некоторые способы справиться с этим. Http://stackoverflow.com/questions/11114725/window-location-reload-not-working-for-google-chrome – dlopez

ответ

0

попробовать это, я Preety уверен в хроме window.location = self.location; должно работать, или попытаться location.reload(true); иначе обратным вызовом некоторых других функций, чтобы перезагрузить страницу.
В противном случае вы должны получить некоторую ошибку, которая предотвращает перезагрузку, вы можете получить консоль в успешном завершении.

+0

Проблема не разрешена 'window.location = self.location;' :( –

1

Вы можете попробовать его с setTimeout .Также вы можете упростить код, в настоящее время вы сочинительство json.success и json.error несколько раз, которые должны быть записаны один раз.

setTimeout(function(){  
      window.location.reload();  
},100); 
+0

Я использовал этот метод, но проблема сохраняется! –

+0

Теперь я подозреваю, почему вы пишете json.success и неудачу два раза? –

+0

Проблема в этих случаях не связана. Потому что этот код работает правильно в других браузерах. –

Смежные вопросы