2013-04-15 13 views
5

私のC#MVC4アプリケーションでは、2つの部分的なビューを扱っています。パーシャルビュー1はid_partial_Analysisのdivにあり、パーシャルビュー2はid_ Display_Averageのdivにあります。各ビューには、datatables.netデータテーブルが含まれています。部分ビュー1のテーブル内で行が選択されると、部分ビュー2が部分ビュー1で行われた行選択に基づく結果を示す更新されたデータテーブルで更新されるjquery ajaxポストが作成されます。Jquery Ajax Postの後の部分ビューの更新

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
     $('.rowselection').click(function (e) { 
      var tdata = $('#form1').serialize(); 
      $.ajax({ 
       type: "POST", 
       data: tdata, 
       url: "Home/PartialAverage", 
       success: function (result) { success(result); } 
      }); 
     }); 

     function success(result) { 
      $("#Display_Average").html(result); 
     } 
    }); 
</script> 

特定のボタンをクリックすると、部分表示1がリフレッシュされます。

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
     $('#ChangeName').click(function (e) { 
      var tdata = $('#form1').serialize(); 
      var origname = $('#NameDiv').find('input[name="Name"]').first().val(); 
      var newname = $('#NameDiv').find('input[name="updatedName"]').first().val(); 
      $.ajax({ 
       type: "POST", 
       data: { 
        mCollection: tdata, 
        Name: origname, 
        updatedName: newname 
       }, 

       url: "Home/ChangeName", 
       success: function (result) { success(result); } 
      }); 
     }); 


     function success(result) { 
      $("#Partial_Analysis").html(result); 
     } 
    }); 
</script> 

部分ビュー1をこのようにリフレッシュすると、2番目の部分ビューも更新されます。私はこれを試して、無限ループを引き起こします。

答えて

7

ajaxSuccessは、ajax呼び出しの応答を受信するたびに呼び出されるグローバルハンドラです。別のajax呼び出しを実行すると、間違いなく無限ループが発生します。その後、応答は、AJAX応答である場合

function success(result) { 
    $("#Partial_Analysis").html(result); 

    reloadDisplayAverage(); 
} 

function reloadDisplayAverage() { 
    var tdata = $('#form1').serialize(); 
    $.ajax({ 
     type: "POST", 
     data: { 
      mCollection: tdata, 
     }, 
     url: "Home/PartialAverage", 
     success: function (result) { success(result); } 
    }); 

    function success(result) { 
     $("#Display_Average").html(result); 
    } 
} 
+0

完全に働いた。 – HendPro12

+0

'$ .post'を使うことができます – Kiquenet

0

...

$.ajax({ 
       url: 'Home/PartialAverage', 
       data: {mCollection: tdata,}, 
       type: 'POST', 
       success: function (result) { 

        $("#Display_Average").html(data); 
       } 
      }); 

これは必要があります。

おそらくここで最良のオプションは、最初の部分図のsuccessハンドラ内で第二のテーブルを更新することですあなたのために働く...それは私のためにした....

関連する問題