2009-08-11 2 views
0

EDIT : 문제는 Boxy와 관련이 없으므로 JQuery의 load 메소드를 사용했을 때 같은 문제가 발생했습니다.jquery ajax post 콜백 - "세 번째"호출 후에 조작이 중지됩니다.

EDIT 2 : Ajax 콜백 내부에서 link.remove()을 꺼내어 아약스로드 전에 배치하면 더 이상 문제가되지 않습니다. ajax 콜백 함수 내에서 요소를 조작하기위한 제한이 있습니까?

Boxy 플러그인과 함께 JQuery를 사용하고 있습니다.

페이지의 '플래그'링크를 클릭하면 Boxy 모달이 팝업되고 ajax를 통해 양식이로드됩니다. 사용자가 양식을 제출하면 링크 (<a> 태그)가 제거되고 새 응답이 ajax 응답에서 만들어집니다. 이 메커니즘은 3 번 작동합니다! 세번째 이후, 콜백 함수는 요소를 제거/대체/추가 (여러 변형 된 테스트) 테스트하지 않습니다.

내가 가진 유일한 힌트는 3 번째 호출 후에 링크의 부모가 선택이 불가능해진다는 것입니다. 그러나 나는 이것의 무엇이든을 만들 수 없다.

죄송합니다. 매우 사소한 문제인 경우 클라이언트 측 프로그래밍 경험이 없습니다. 여기

<div class="flag-link"> 
    <img class="flag-img" style="width: 16px; visibility: hidden;" src="/static/images/flag.png" alt=""/> 
    <a class="unflagged" href="/i/flag/showform/9/1/?next=/users/1/ozgurisil">Flag</a> 
</div> 

는 JS 관련 코드입니다 :

관련 HTML

은 다음과 같습니다

$(document).ready(function() { 

    $('div.flag-link a.unflagged').live('click', function(e){ 
     doFlag(e); 
     return false; 
    }); 
... 

}); 


function doFlag(e) { 
    var link = $(e.target); 
    var url = link.attr('href'); 

    Boxy.load(url, {title:'Inappropriate Content', unloadOnHide:true, cache:false, behaviours: function(r) { 
    $("#flag-form").live("submit", function(){ 

     var post_url = $("#flag-form").attr('action'); 
     boxy = Boxy.get(this); 
     boxy.hideAndUnload(); 
     $.post(post_url, $("#flag-form").serialize(), function(data){ 

      par = link.parent();     
      par.append(data); 
      alert (par.attr('class')); //BECOMES UNDEFINED AT THE 3RD CALL!! 
      par.children('img.flag-img').css('visibility', 'visible'); 
      link.remove();            
     }); 

     return false; 
     }); 
    }}); 

} 
+0

데모가 있습니까? – montrealist

+0

왜 링크를 제거/교체합니까? 링크의 href 및 클래스 속성을 업데이트 할 수 없습니까? 그렇게하는 것이 훨씬 안전 할 것입니다. – montrealist

+0

데모를 제공하려고합니다. 링크를 교체하기 전에 문제가 발생했습니다. Ajax 콜백 함수 내에서 요소를 대체하려고 시도한 것은 이번이 처음입니다. 나는 최근에 편집을했다. – shanyu

답변

0

구약과 답변이 늦어하지만, 그래서, 내 대답에 대한 인터넷 검색을하면서 .. 나는이 발견했다. .

동일한 Ajax 데이터를 반환하기 때문에 "notmodified"오류가 발생하는 문제라고 생각합니다.

"ifModified"옵션이 false (기본값이기도 함)로 설정된 경우에도 이러한 현상이 발생하는 것으로 보입니다.

같은 Ajax 데이터를 세 번 돌려 주면 나에게 문제가 발생할 것입니다 (jQuery 1.4). 데이터를 고유하게 만들면 (응답에 시간/난수를 추가하는 것만으로) 문제가 제거됩니다. 내가 모난 호출 한 후

이 브라우저 (파이어 폭스) 인 경우 나도 몰라, jQuery를 또는 내가 같은 문제가 있었다

0

하지만 서버 (아파치) 문제는 .. 내가 자바 스크립트를 실행할 수 없습니다. 그래서 모든 자바 스크립트 코드를 afterShow에 넣습니다 : boxy 속성 중 하나의 함수. 내 양식을 제출하는 것 외에는 거의 실행할 수 있습니다. 내 길은 너에게 뭔가 줄 수있어.