2015-10-28 73 views
0

我有一個頁面上有5個選項卡 - 在任何選項卡上單擊保存按鈕時,它應該執行諸如驗證和發佈數據到控制器的任務 - 哪些工作正常。一旦Ajax調用返回成功,它會調用一個警報讓用戶知道它已成功保存數據,然後(這是出錯的地方)刷新頁面;返回到相同的選項卡。引導3 - 刷新頁面到特定選項卡

目前它只是修改了右側選項卡的URL欄地址,但並未實際刷新頁面。 我必須在網址欄上手動按Enter才能刷新。

我有這樣的代碼在我的document.ready:

$(function() { 
      var hash = window.location.hash; 
      hash && $('ul.nav a[href="' + hash + '"]').tab('show'); 

      $('.nav-tabs a').click(function (e) { 
       $(this).tab('show'); 
       var scrollmem = $('body').scrollTop(); 
       window.location.hash = this.hash; 
       $('html,body').scrollTop(scrollmem); 
      }); 
     }); 

這是我的Ajax功能 - 它的工作原理,但刷新頁面代碼的詳細做以上。

$.ajax({ 
    type: "POST", 
    url: '@Url.Action("AddNewAssessment","ChangeManagement")', 
    dataType: "text", 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify(dataList) 
}).done(function (data) { 
    if (data == "Success") { 
     alert("Saved successfully"); 
     var test = window.location.href + "tab_Assessment"; 
     window.location.href = test; 
     } 
}).fail(function() { 
    alert("There was a problem, please try again."); 
}); 

我在做什麼錯?

從研究,我已經做了,似乎沒有人有這個問題(我已經看了多次做題。)

回答

0

好吧,我設法弄明白了。 我只是使用localStorage來保存我來自哪個選項卡,然後在重新加載頁面後,我可以訪問localStorage並打開該選項卡,而不是嘗試根據我在哪個函數中加載頁面。

    $.ajax({ 
         type: "POST", 
         url: '@Url.Action("etc","data")', 
         dataType: "text", 
         contentType: "application/json; charset=utf-8", 
         data: JSON.stringify(dataList) 
        }).done(function (data) { 
         if (data == "Success") { 
          alert("Edit successful"); 
          localStorage.setItem('tab', "CAB"); 
          location.reload(); 
         } 
        }).fail(function() { 
         alert("There was a problem, please try again."); 
        }); 

上的document.ready:

$(document).ready(function() { 
    if (localStorage.getItem('tab')) { 
     var tab = "#tab_" + localStorage.getItem('tab'); 
     $('[href=' + tab + ']').tab('show'); 
     localStorage.clear(); 
    } 

    $(function() { 
     var hash = window.location.hash; 
     hash && $('ul.nav a[href="' + hash + '"]').tab('show'); 

     $('.nav-tabs a').click(function (e) { 
      $(this).tab('show'); 
      var scrollmem = $('body').scrollTop(); 
      window.location.hash = this.hash; 
      $('html,body').scrollTop(scrollmem); 
     }); 
    }); 
1

你不應該使用location.href更改標籤。 查找有關選項卡的Bootstrap-Doku以手動更改選項卡。

$('#myTabs a[href="#profile"]').tab('show') // Select tab by name 
$('#myTabs a:first').tab('show') // Select first tab 
$('#myTabs a:last').tab('show') // Select last tab 
$('#myTabs li:eq(2) a').tab('show') // Select third tab (0-indexed) 
相關問題