2009-08-20 6 views
1

ID가 # REQUESTFORM 인 여러 양식이 있습니다. 데이터를 전송할 때 올바른 정보를 검색하기 위해 가장 가까운 명령을 사용합니다. 하지만 성공한 아약스 콜백에서 사용하려고했을 때 같은 명령이 작동하지 않습니다. 어떻게하면 서버의 응답을 받고 올바른 형태로 인쇄 할 수 있습니까?성공에 가장 가까운 명령 사용하기 Ajax 콜백

+0

동일한 ID를 가진 페이지에 여러 요소가 있다고 하시겠습니까? 그것은 html 스펙에 위배되므로 문제의 원인 일 수 있습니다. – seth

답변

2

출력이 성공 함수에서 나오는 것은 서버에서받은 데이터를 참조하고 있는데, 서버에서 수신 한 데이터가 DOM에 연결되어 있는지 확인할 수 없습니다. 당신이 #REQUESTFORM 참조 할 아주 간단한 트릭있다 :

...live('click', function() { 
    $("[name='action']... 
    // REFERENCE TO the REQUESTFORM 
    var requestForm = $(this).closest('#REQUESTFORM'); 

    $.ajax({ 
     type: "POST", 
     data: requestForm.serialize(), 
     ... 
     success: function(output) { 
      requestForm.html(output); 
     ... 

JS 기능 범위이기 때문에 에이 정의하지 가 사용이의 var에 requestForm 성공 기능을 사용할 수 있습니다 이벤트 Y 인딩 기능도 종료됩니다.

마지막으로 DOM에서 고유 한 것으로 가정하는 ID로 참조하는 양식이 가장 가까운 경우, 실제로는 가장 가까운 대신 $ ('# REQUESTFORM')을 사용할 수 있습니다.

+0

와우, 그거야! 고맙습니다!!! – Efe