2010-06-15 11 views
2

버튼 클릭시 특정 값이 데이터베이스에 저장되고 다른 값이 검색되는 데이터 테이블이 있습니다. 나는 그 과정이 연속적 일 것을 요구하지만, 나는 그 일을 처음으로 할 수만있다.jQuery ajax는 처음에만 작동합니다.

처음에는 .ajax().replaceWith()을 사용하여 전체 테이블을 다시 작성했지만 DOM을 덮어 쓰므로 테이블과 관련된 이벤트가 손실 되었기 때문에이 테이블을 다시 작성했습니다. stopPropagation().live()을 사용하고 있기 때문에 .live()을 사용할 수 없습니다. 이벤트 버블 링으로 인해 지원되지 않습니다. 본질적으로 클릭 이벤트를 .ajax() 콜백 내에서 테이블에 다시 바인딩 할 수 있었지만 버튼 클릭 이벤트에 대한 두 번째 호출은 아무런 성과가 없었습니다.

ajax에 .get()을 사용하고 테이블에 결과를 입력하는 코드를 .html()으로 변경했습니다. 이제 서버 쪽 코드가 <table> 태그를 제외한 완전한 테이블을 반환합니다. 더 이상 클릭 이벤트를 테이블에 다시 바인딩 할 필요가 없지만 버튼을 계속 클릭해도 여전히 아무 것도 수행되지 않습니다.

마지막으로, 결과는 .load()으로 변경되었지만 결과는 동일하지 않습니다.

"do nothing"은 아약스 호출이 새 HTML을 예상대로 반환하는 동안 테이블에 적용되지 않는 것을 의미합니다. 나는 그것이 DOM을 바꾸는 것과 관련이 있다고 확신하지만, 테이블 내용 자체를 덮어 쓰는 것이기 때문에 테이블 객체 자체를 덮어 쓰는 것으로 생각했기 때문에 작동해야한다. 분명히 나는 ​​뭔가를 놓치고있다. 뭐야?

편집 :

HTML :

<table id="table1" class="mytable"> 
    <tr> 
     <td><span id="item1" class="myitem"></span></td> 
     <td><span id="item2" class="myitem"></span></td> 
    </tr> 
</table> 

<input id="Button1" type="button" value="Submit" /> 

jQuery를 :

당신은 새로운 내용을로드 한 후 이벤트 핸들러를 리 바인드해야
$("Button1").click(function() { 
    $("table1").load(
     "data.aspx", 
     function(data) { 
      //... 
     } 
    ); 
}); 
+1

그것은 앞에서와 아약스 사건 후 몇 가지 코드 조각, 심지어 일부 소스 예제를 가지고 도움이 될 것입니다. 여기에 많은 정보가 있으며 정확히 무엇을하고 있는지 따라 가기가 어렵습니다. – Shaded

+0

당신은 설명했다. * "do nothing"은 ajax 호출이 새로운 HTML을 예상대로 리턴하는 동안 테이블에 적용되지 않는다는 것을 의미한다. * Ajax 호출이 성공했다는 것을 의미한다. DOM 조작이나 실패한 innerHTML 사용법이다. . –

+0

@ Shaded : 문제는 엄격하게 jQuery가 아니지만, 내가하는 일의 샘플 코드를 추가했습니다. –

답변

2

는 내가 jQuery를 함께 뭔가 잘못을하고 있던 나에게 확신이 반 일이 응시하지만, 시행 착오 및 경고 문을 많이 통해, 드디어 아약스이었다 발견 매번 동일한 결과를 반환합니다. 캐시하지 않도록 서버 쪽 스크립트를 설정하면 (Response.Expires = 0) 문제가 해결되었습니다.

+0

예를 들어 설명해 주시겠습니까? – Lijo

3

사용 .replaceWith 방법은 처음으로 일했다 (그리고 FWIW, 난 아직. .load() 문을 사용하고 있습니다)하지만, 방법을 .html 중에서 사용하는 모든 시간을 잘 작동합니다. JQuery와 :

관련 문제