2012-01-18 9 views
0

検索フォームを持つアプリケーションを作成しました。以下に検索結果が含まれています。 今、私は歴史、ボタンバック機能を追加できるようにしたい。mvc2 with ajax table戻るボタンを有効にする

問題は私がページを読み込む際の無限ループに巻き込まれていることと、なぜこれがFireFoxにあるのかわかりません。

私はこれを行うにはどのようにこのチュートリアルに従っている:

http://www.asp.net/mvc/tutorials/contact-manager/iteration-7-add-ajax-functionality-cs

私のコードは次のとおりです。

Javascriptを

<% =Html.JQuery() %> 
<script src="../../../../Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="../../../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
    <script type="text/javascript"> 

    var _currentCaseId = -1; 
    Sys.Application.add_init(pageInit); 
     function OnBegin() { 
      var caseId = $("#SelectDeceased_hidden").val(); 

      Sys.Application.addHistoryPoint({ "caseId": caseId }); 

      $(document).ready(function() { 
       $("#divTableContainer").html(""); 
      }); 
     } 

     function OnSuccess() { 
      $('#divTableContainer').fadeIn('slow'); 
     } 

     function OnFailure() { 
      alert("Something went wrong. Try again..."); 
     } 

    function pageInit() { 
     // Enable history 
     Sys.Application.set_enableHistory(true); 

     // Add Handler for history 
     Sys.Application.add_navigate(navigate); 
    } 

    function navigate(sender, e) { 
     // Get groupId from address bar 
     var caseId = e.get_state().caseId; 

     // if cases does not match 
     if (_currentCaseId != caseId) { 
      // assign the case id 
      _currentCaseId = caseId; 
      alert(caseId); 
      $(document).ready(function() { 

       $.ajax({ 
        url: "/PostItems/UmiTable?currentCase=" 
              + _currentCaseId 
              + "&EntityType=-1", 
        success: function (data) { 
         $("#divContactList").text(data); 
        } 
       }); 
      }); 
     } 
    } 

と私はナビゲーションを管理するためにjqueryの履歴スクリプトを使用しているエンド の私のhtml

<% using (Ajax.BeginForm("UmiTable", new AjaxOptions() { 
             OnFailure = "OnFailure", 
             OnBegin = "OnBegin", 
             LoadingElementId = "divLoading", 
             UpdateTargetId = "divTableContainer" })) %> 
    <% { %> 
    <% using (Html.MooseFieldWrapper("Find case", "StandardForm")) 
     { %>    
      <%= Html.CutomTextBox("Case") %>     
      <li class="Button"><input type="submit" value="Go" /></li> 
    <% } %> 
    <% } %> 
<div id="divLoading">  
    <div><img src="Indicator.gif" alt="loading data" />Loading</div> 
</div> 
<div id="divTableContainer"></div> 
+1

これはIEとChromeでコードが正常に動作するため、MicrosoftAjaxのバグのようです。とにかく古いライブラリです。 jQueryの代わりにまだそれを使用している理由はありますか(あなたが参照しているのを見て、どうしてそれを利用しないのですか?)また、現代のブラウザに組み込まれたHTML5の履歴機能が利用できるようになった今、残念ながらそれを利用することはできません。たとえば、優れた[jquery.history](https://github.com/balupton/history.js)プラグインはこれを行い、APIをサポートしないレガシーブラウザでは古いメソッド(URLフラグメントを使用)に正常に劣化します。 –

+0

@DarinDimitrov:私はこのソリューションを見たので、私はjqueryを使用しないと思っていましたが、Microsoft ajax dllを使用します。 – cpoDesign

+0

まあ、私はあなたが間違っていると思っています。とにかく助けていただきありがとうございます。 –

答えて

関連する問題