2014-07-24 1 views
-1

내 MVC 응용 프로그램에서 Datatables 및 삭제에 문제가 있습니다. 클릭 할 때마다 사용자가 해당 행을 삭제할 것인지 묻는 모달 창을 열 때마다 각 행에 대한 단추가 있습니다. "확인"을 클릭하면 데이터가 내 데이터베이스에서 제거되고 삭제 된 행은 삭제되며 창은 닫힙니다. 이 모든 행을 삭제할 때 예상대로 작동합니다. 그러나 페이지를 새로 고치지 않고 첫 번째 삭제 후 다른 행을 삭제하려고하면 문제가 발생합니다.MVC + Datatables : 한 번 이상 삭제 실행

두 번째로 삭제를 클릭하면 내 함수는 처음에 의 초기 행을 삭제하려고 시도하고 더 이상 존재하지 않으므로 실패합니다. 그런 다음 즉시 삭제를 요청한 새 행을 삭제합니다. 나는 어떤 ID에 삭제 기능이 있는지 말해주는 콘솔 출력을 가지고 있으며 이전 ID가 먼저 함수에 다시 전달되고 있음을 나타냈다. I는 (ID = 87) 행 하나를 삭제 한 후 콘솔 또는 페이지 여기

clicked delete on 87 
Deleting #87 
DELETE http://localhost:49773/api/IncidentAPI/87 
200 OK 
Deleted 

clicked delete on 87 
Deleting #87 
DELETE http://localhost:49773/api/IncidentAPI/87 
500 Internal Server Error 

clicked delete on 84 
Deleting #84 
DELETE http://localhost:49773/api/IncidentAPI/84 
200 OK 
"NetworkError: 500 Internal Server Error - http://localhost:49773/api/IncidentAPI/87" 
Deleted 

상쾌하지 않고 다른 (= 84 ID와 함께)를 삭제하면 다음

내 삭제 버튼의 코드 내 OUPUT이다 각 행에 다음

$('.Delete').unbind().on("click", function() { 
       var tr = $(this).closest('tr'); 
       var ID = dataLog.row(tr).data()[16]; 
       tr.addClass('deleteHighlight'); 

       $('#deleteWindow').dialog('open'); 

       $('.deleteOK').on("click", function() { 
        console.log("clicked delete on " + ID); 

        deleteIncident(ID); // deletes the row with that ID 
        $('.Details').bind(); 
       }); 

       $('.deleteClose').on('click', function (event, ui) { 
        console.log("Close delete"); 
        tr.removeClass('deleteHighlight', 500); 
        $('#deleteWindow').dialog('close'); 
       }); 

      }); 

function deleteIncident(ID) { 
     var rowID = '#' + ID; 
     console.log("Deleting " + rowID); 

     $.ajax({ 
      url: '/api/IncidentAPI/' + ID, 
      type: 'DELETE', 
      contentType: "application/json; charset=utf-8", 
      success: function (results) { 
       console.log("Deleted"); 

       dataLog.row(rowID).remove().draw(); 
       $('#deleteWindow').dialog('close'); 
      } 
     }); 
    } 

답변

0

변경 내 삭제 방법 당신의 AJAX 요청 s입니다 같은 omething 아래

$.ajax({ 
    url: '/api/IncidentAPI/', 
    type: 'POST', 
    data:{id:ID}, 
    dataType: "json", 
    success: function (results) { 
     console.log("Deleted"); 
     dataLog.row(rowID).remove().draw(); 
     $('#deleteWindow').dialog('close'); 
    } 
}); 

는 PHP 말에 $ _POST를 사용하는 ID의 값을 얻는다. 예 : $ id = $ _POST [ 'id']; 문제가 해결되기를 바랍니다.

+0

이것은 문제를 해결하지 못했습니다. –

0

잘못된 버튼을 바인딩하고있는 것으로 나타났습니다. 모달 윈도우를 여는 버튼이 아니라 OK 버튼에 바인딩해야했습니다.

$('.deleteOK').unbind().on("click", function() { 
    deleteIncident(ID); 
    $('.deleteOK').bind(); 
}); 
관련 문제