2014-01-18 1 views
0

내 사이트에 하나의 기능이 있습니다. 페이지를 새로 고침하지 않고 삭제하십시오. 사용자는 '삭제'를 누르면 브라우저는 Ajax 요청을 보냅니다. id 매개 변수가있는 'delete'스크립트를로드합니다.Ajax 요청 'onError'처리기

모두 정상적으로 작동합니다. 그러나 데이터베이스의 참조 무결성 때문에 그다지 좋지 않습니다. 예를 들어 일부 사람들이 살고있는 거리를 지울 수 있습니다.

스크립트를 업그레이드하고 싶습니다. 나는 스크립트를 삭제하는 수표를 추가하고 일부 '사람'이 '거리'테이블에 연결된 경우 데이터를 삭제하지 못하게하려고합니다. 버튼 클릭의

jQuery를 핸들러 :

$('body').on('click', '.deleteStreet', function() 
{ 
    var id = $(this).attr('id'); 
    var hideMe = $(this).parent().parent(); 
    var dataString = 'id=' + id; 
    if(confirm("Are you sure you want to delete street? It is possible some people living there!")) 
    { 
     $.ajax({ 
      type: "GET", 
      url: "/index.pl?mode=streets&action=delete", 
      data: dataString, 
      cache: false, 
      success: function(e) 
      { 
       hideMe.hide(); 
      } 
     }); 
     return false; 
    } 
}); 

그것은 어쨌든 데이터가 삭제됩니다 지금은 어쨌든 스크립트 호출합니다. 나는 지금 스크립트를 삭제하기 위해 몇 가지 검사를 추가 할 수는 있지만 삭제되지는 않을 것이다. 어쨌든 jquery 스크립트가 작동하고 테이블 행을 숨길 것이다 (요청이 404없이 ok를 보내므로)

1) 가능한가? 스크립트 결과 삭제 및 숨기기 여부에 따라 행 숨기기를 참조 하시겠습니까? 예를 들어 true 또는 false를 반환하면 js 스크립트가이를 catch하고 그에 따라 데이터 삭제 또는 삭제에 대한 메시지를 표시합니다.

2)이 문제는 내 사이트의 구조로 인해 발생합니다. index.pl에 몇 가지 스위치가 있으며 쿼리 (mode=street에로드 한 다음 street.pl, mode=user을로드 한 다음 users.pl 등을로드)에 따라 적절한 스크립트로드를로드하십시오. 따라서 delete.pl 스크립트 전에로드 된 모든 데이터가 표시되므로 true 또는 false가 반환 된 스크립트를 확인할 수 없습니다.

어떤 도움이 필요합니까? :) 고맙습니다!

추신 : 나는 끔찍한 영어에 대해 매우 유감스럽게 생각합니다.

답변

0

성공 콜백의 첫 번째 매개 변수에서 ajax 호출의 결과를 얻을 수 있습니다. 예 :

$.ajax({ 
     type: "POST", 
     url: "/index.pl?mode=streets&action=delete", 
     data: dataString, 
     cache: false, 
     success: function(e) 
     { 
      if(e === '1'){ 
       hideMe.hide(); 
      } 
     } 
    }); 

테스트 결과를 콘솔에 기록하십시오 (console.log(e)). 데이터를 삭제하려면 POST 요청 (또는 모든 브라우저에서 지원되지는 않지만 DELETE)을 사용해야합니다.

데이터 (거리)가 어떻게 보이는지는 모르지만 다른 방법으로는 삭제 요청 결과에서 json 개체의 모든 기존 거리를 반환 할 수 있습니다. 모든 줄을 새로 고칩니다.

+0

데이터를 삭제하려면 POST 요청을 사용해야합니다. 왜? 따라서 최종 사용자는'/ users/delete/# id'를 입력하고 사용자를 삭제하지 않을 것입니까? 예, 그 ok, 나는 단지 그것에 관해 생각했다. –

+0

E는 결과의 html을 포함합니다. 하지만 ' ....'태그가 있습니다. 제 2 문제를보세요. 또한, 언제 정확하게 사용할 수있게 될지 설명 할 수 있습니까? –

+0

색인이 아닌 다른 파일을 Ajax 요청으로 호출해야합니다. 당신의 삭제 기능은 어떻게 생겼습니까? 어떤 langage 당신은 서버 쪽을 가지고 있습니까? detele 함수를 다른 파일에 저장해야합니다. – MamaWalter