2013-04-15 164 views
5

在我的c#MVC4應用程序中,我正在使用兩個部分視圖。 Partial View 1位於ID爲Partial_Analysis的div中,Partial View 2位於ID爲Display_Average的div中。每個視圖都包含一個datatables.net數據表。當行被在局部視圖中的一個表內選擇,一個jquery AJAX後由使局部圖2與基於斷行選擇的更新數據表表示的結果是在局部視圖作出刷新1.部分視圖刷新後jquery Ajax後

<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時,我想要第二個局部視圖也刷新。我試過這會導致無限循環。

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

回答

7

ajaxSuccess是一個全球性的處理每當收到一個AJAX調用的響應時調用。在其中執行另一個Ajax調用肯定會導致無限循環。

也許這裏最好的選擇是在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

工作完美。 – HendPro12

+0

您可以使用'$ .post' – Kiquenet

0

如果響應是Ajax響應......然後

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

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

這應該爲你工作..它爲我做了....