2013-04-15 19 views
5

W mojej aplikacji C# MVC4 pracuję z dwoma częściowymi widokami. Partial View 1 znajduje się w div z id Partial_Analysis, Partial View 2 jest w div z id Display_Average. Każdy widok zawiera datatable datatables.net. Po wybraniu wiersza w tabeli w widoku częściowym zostanie wykonany wpis jquery ajax, który spowoduje częściowy widok 2 w celu odświeżenia ze zaktualizowanym datatable, pokazującym wyniki na podstawie wyboru wiersza wykonanego w częściowym widoku 1.Częściowy widok Odświeża po 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> 

Po kliknięciu określonego przycisku widok częściowy 1 jest odświeżany.

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

Po odświeżeniu widoku częściowego 1, chcę, aby drugi częściowy widok również odświeżył się. Próbowałem tego, co powoduje nieskończoną pętlę.

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
     $('#Partial_Analysis').ajaxSuccess(function (e) { 
      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); 
     } 
    }); 
</script> 

Odpowiedz

7

ajaxSuccess to globalny program obsługi, który jest wywoływany za każdym razem, gdy odbierana jest odpowiedź na wywołanie ajax. Wykonanie kolejnego wywołania ajaxa z pewnością spowoduje nieskończoną pętlę.

Prawdopodobnie najlepszym rozwiązaniem jest, aby zaktualizować drugą tabelę w programie obsługi pierwszego widoku częściowego success:

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

Działa idealnie. – HendPro12

+0

Możesz użyć '$ .post' – Kiquenet

0

jeśli odpowiedź jest ajax odpowiedź ... potem

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

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

ten powinien pracuję dla ciebie ... to mi się udało ...