2013-04-15 4 views
5

Nella mia applicazione C# MVC4 sto lavorando con due viste parziali. Partial View 1 si trova in un div con id Partial_Analysis, Partial View 2 è in un div con id Display_Average. Ogni vista contiene un datatables.net datatable. Quando una riga viene selezionata all'interno della tabella nella vista parziale uno, viene creato un post jquery ajax che fa sì che la vista parziale 2 si aggiorni con un datatable aggiornato che mostra i risultati in base alla selezione di riga effettuata nella vista parziale 1.La visualizzazione parziale si aggiorna dopo 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> 

Quando si fa clic su un pulsante specifico, la vista parziale 1 viene aggiornata.

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

Dopo questo aggiornamento della vista parziale 1, desidero aggiornare anche la seconda vista parziale. Ho provato questo che causa un ciclo infinito.

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

risposta

7

ajaxSuccess è un gestore globale che si chiama ogni volta che si riceve una risposta per una chiamata AJAX. L'esecuzione di un'altra chiamata Ajax causerà sicuramente un loop infinito.

Probabilmente la migliore opzione ecco aggiornare seconda tabella nella success gestore della prima vista parziale:

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

Ha funzionato perfettamente. – HendPro12

+0

Puoi usare '$ .post' – Kiquenet

0

se la risposta è la risposta ajax ... poi

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

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

questo dovrebbe lavoro per te..it ha fatto per me ....