2013-04-15 40 views
5

Trong ứng dụng C# MVC4 của tôi, tôi đang làm việc với hai chế độ xem một phần. Xem một phần 1 nằm trong div có id Partial_Analysis, Partial View 2 nằm trong div có id Display_Average. Mỗi khung nhìn chứa một datatables.net datatable. Khi một hàng được chọn trong bảng trong phần xem một phần, một bài đăng jquery ajax được tạo thành một phần xem 2 để làm mới với dữ liệu được cập nhật hiển thị kết quả dựa trên lựa chọn hàng được thực hiện trong chế độ xem từng phần 1.Xem một phần Làm mới sau khi Jquery Ajax đăng

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

Khi một nút cụ thể được nhấp, một phần xem 1 được làm mới.

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

Khi làm mới này một phần xem 1, tôi cũng muốn xem lại phần thứ hai. Tôi đã thử điều này gây ra một vòng lặp vô hạn.

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

Trả lời

7

ajaxSuccess là trình xử lý toàn cầu được gọi khi nhận được phản hồi cho cuộc gọi ajax. Thực hiện một cuộc gọi ajax khác trong đó chắc chắn sẽ gây ra một vòng lặp vô hạn.

Có lẽ lựa chọn tốt nhất ở đây là để cập nhật bảng thứ hai trong success handler của xem phần đầu tiên:

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

Làm việc hoàn hảo. – HendPro12

+0

Bạn có thể sử dụng '$ .post' – Kiquenet

0

nếu câu trả lời là phản ứng ajax ... sau đó

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

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

này nên làm việc cho bạn ... nó đã làm cho tôi ....

Các vấn đề liên quan