2009-12-03 2 views
0

다음 기능이 조금 있습니다. 주의 자바 스크립트/아약스와 함께 총 멍청한 놈 임하시기 바랍니다, 그래서 나와 함께 맨발하십시오자바 스크립트로 값 제출

<script type="text/javascript"> 
function removeElement($parentDiv, $childDiv){ 


    if (document.getElementById($childDiv)) {  
      var child = document.getElementById($childDiv); 
      var parent = document.getElementById($parentDiv); 
      parent.removeChild($child); 
    } 
} 
</script> 

<a href=\"javascript:;\" onClick=\"removeElement('$parent','$child');\">x</a> 

이 기능은 자식 요소를 삭제하고 훌륭한 클라이언트 측 작동 컨텐츠! 그러나 동일한 인스턴스에서 서버에 값을 전달하고자하므로 요소의 내용도 mysql 데이터베이스에서 삭제할 수 있습니다. 나는 이것을 어떻게하는지 모른다. 그래서 어떤 제안이라도 매우 감사 할 것이다!

Notes : $ child 및 $ parent는 각 요소에 고유 한 ID를 부여하는 데 사용하는 php 파일 내에서 생성 된 문자열입니다. 이것은 더 복잡한 $를 사용하지 않고도 서버에 대한 간단한 POST 요청을 보낼 수있는 가장 쉬운 방법입니다 $ .post() -

+0

저는 훌륭한 서버 측 프로그래머는 아니지만 빨리 물건을 집어 들고 있습니다. 그런 일이 있으면 꽤 좋은 자바 스크립트 프로그래머입니다. 질문 : 동일한 removeElement 함수 내에서 cgi, restlike 또는 dynamic script 태그 요청을 XMLHttpRequest를 통해 서버로 다시 보낼 수 있습니까? – jeremyosborne

+0

@jeremyosborne -> urmmm? 나는 사소한 단서를 가지지 않을 것이다? 나는 자바 스크립트에 올 때 총 멍청한 놈이다. – Lea

+0

일부 클라이언트 측 프레임 워크, Jquery, scriptaculos, moo 도구를 사용하고 있습니까? 그것은 모두 매우 쉽습니다. –

답변

3

jQuery 또는 유사한 프레임 워크를 사용하면 편리합니다. 다음은 jQuery를에 그것을 할 것입니다 방법은 다음과 같습니다

$(function() { 
    $('.delete').click(function() { 
     var link = $(this); 
     var id = link.attr('id').replace('element_', ''); 
     $.ajax({ 
      url: 'handler.php', 
      data: { 
       element: id 
      }, 
      type: 'post', 
      success: function() { 
       link.remove(); 
       // Or link.closest('tr').remove() if you want to remove a table row where this link is 
      } 
     }); 
     return false; 
    }); 
}); 

html로 :

<a href="#" class="delete" id="element_20">Remove</a> 

그리고 handler.php :

mysql_query("DELETE FROM `table` WHERE id = '".mysql_real_escape_string($_POST['element'])."'"); 

항상 데이터베이스 입력을 탈출 기억!

만약 당신이 말한대로 완전히 멍청한 사람 일 겁니다. 아마도이 모든 것을 이해하지 못할 것입니다. jQuery의 AJAX 기능과 jQuery 또는 유사한 JavaScript 프레임 워크를 사용한 전반적인 개발에 대해 읽어 보시기 바랍니다.함수를 호출 할 때

+0

안녕, 고마워! 그것은 잘 작동합니다. 삭제되는 요소 대신 링크 만 삭제됩니다. 나는 link.closest ('tr')를 시도했다. remove(), 그리고 방금 tr, div로 변경 ...하지만 그 작동하지? 어떤 제안? – Lea

+0

삭제할 항목에 따라 다릅니다. 삭제 링크가 삭제하려는 요소 안에 있으면 .closest ('div'); 작동해야합니다. 그렇지 않은 경우 다른 것을 시도해야합니다. http://docs.jquery.com/에서 트래킹 및 선택기에 대한 jQuery의 설명서를 확인하십시오. –

+0

도움 주셔서 감사합니다. – Lea

1

내가 ID를

jQuery를 사용하여 엔티티를 삭제할 말할 수 있습니다. ajax 함수. 요청이 완료 될 때 (그리고 응답에 성공적인 응답 코드가있는 경우에만) 실행될 단일 콜백 함수를 지정할 수 있습니다. Jquery post docs

개방형 데이터베이스 연결이 있다고 가정 할 때 서버에서.

mysql_query ("DELETE FROM TABLE WHERE ID =". $ _ POST [ 'ID']); 여기

발견

on mysql_query 편집 :

아약스 게시가 완료 그래서 다음은 요소를 제거합니다. 첫 번째 arg는 조치를 취할 스크립트의 URL이고, 두 번째는 전송할 데이터입니다.이 경우 ID 게시 값은 {child.id}이고 세 번째 인수는 걸릴 anon 인라인 콜백 함수입니다 요소 클라이언트 측을 제거하는 조치.

<script type="text/javascript"> 
function removeElement($parentDiv, $childDiv){ 
if (document.getElementById($childDiv)) { 
      var child = document.getElementById($childDiv); 
      var parent = document.getElementById($parentDiv); 
      $.post('{URLTOSCRIPT}', 'ID=$child.id',function() { parent.removeChild($child); }); 

}} 
</script> 
+0

고마워! 그렇다면 removeElement() 기능을 깨지 않고 기존 코드에이 코드를 어떻게 통합 할 수 있습니까? 예를 들어 주시겠습니까? – Lea

+0

다시 한번 감사드립니다! 스 니펫을 사용하는 방화범없는 매개 변수가없는 오류가 발생합니다. 또한 URLTOSCRIPT -? 이 URL을 데이터를 처리 할 페이지로 바꿉니 까? 죄송합니다. 내 noobness가 성가신 경우 – Lea

+0

예 {}을 (를) 포함한 urltoscript를 바꾸고 두 번째 매개 변수 $ child.id를 필요한 실제 값으로 대체하십시오. 즉 ID = 3 또는 ID = SWK01 ... –

1

, 당신과 같이 태그에 PHP 변수를 넣어 싶어 :

<?php echo $parent; ?>

와 함수 정의에서

<?php echo $child; ?>

을, 당신은 것입니다 PHP 스타일 변수를 없애고 다음과 같이 사용하고 싶습니다.

function removeElement(parentDiv, childDiv) { //CODE }

+0

JS 함수는 PHP 함수 페이지에 있습니다. 코드가 제안하는대로 여전히 출력됩니다. – Lea

관련 문제