2011-10-18 3 views
0

아약스 요청에 문제가 있으며 간단하게 <input type="submit"/>입니다.jQuery 라이브가 예상대로 작동하지 않습니다.

다른 뷰 내에서 뷰를로드하는 데 모듈형을 사용합니다. 하나의 뷰에서 다른 뷰로 .load(url)을 사용하는 jquery를 사용합니다. 그래서 view_1 안에 view_2를로드하고 view_2의 js 스크립트가 view_1 안에 있으면 을 사용하여 view_2에서 xhr 요청을 시작해야하므로, 시도 할 때 한 번에 1 대신에 3 (multiple) xhr at same time이 실행됩니다. 이유를 모르겠다.

내가 아는 유일한 것은이다 : 그것은 3 여러 XHR을 시작

live('click')를 사용
  1. view_1에.
  2. 보기 1에서 click()을 사용하면 작동하지 않습니다 (분명히 생각합니다).
  3. 직접 작동 view_2 내부 click()를 사용 (하지만 난, 난 단지 "부모"에 뷰를 JS를 사용할 수 있습니다 JS 로드 뷰에서 사용할 수 없습니다) 정말하지 않는, 기능은 정말 간단하다

왜 내가이 문제 (나는 또한 아약스 beforeSend에서 제출을 비활성화)이 view_1로드 된 view_2에서 실행되는 코드를 확인하고 클릭 3 XHR을 시작 : | 그게 당신이 기본 동작을 방지하지 않는 한 다음 양식 내부 버튼 제출의 경우

$(document).ready(function(){ 
    $('#save-doc').live('click',function(){ 
    var _title = $('#doc-title').val(); 
    var _doc = $('#doc-doc').val(); 
    update_doc(url_update_doc,{'title':_title,'doc':_doc,'id_doc':_choosed_doc,'id_project':id_project},this); 
    }); 
}); 
function update_doc(_url,_data,_starter){ 
    $.ajax({ 
     type:'POST', 
     data:_data, 
     url:_url, 
     dataType:'json', 
     beforeSend:function(){ 
      $('.ajax-loading').show(); 
      $(_starter).attr('disabled','disabled'); 
     }, 
     error:function(){ 
      $('.ajax-loading').hide(); 
      $(_starter).removeAttr('disabled'); 
     }, 
     success:function(json){ 
      $('.ajax-loading').hide(); 
      $(_starter).removeAttr('disabled'); 
      if(json.error){ 
       $('#error-title').html(json.error_title); 
       $('#error-doc').html(json.error_doc); 
       $.scrollTo('.append-form-edit-doc','fast'); 
      } 
      if(json.confirm){ 
       $.scrollTo('#top','fast'); 
       $.gritter.add({ 
        title:'Document Saved', 
        text:json.confirm 
       }); 
      } 
     } 
    }); 
} 
+0

ID가 'save-doc' 인 요소가 여러 개있을 수 있습니다. –

+0

"return false;"를 추가하려고 시도한 적이 있습니까? "클릭"처리기의 끝에? – Pointy

+0

@Shadow Wizard 님이 ID가 아닙니다. :) – sbaaaang

답변

2

는 양식이 제출됩니다.

2

.live()는 문서 자체에 이벤트 처리기를 바인딩한다는 것을 기억하십시오. 이를 염두에두고, 모든 클릭에 대해 문서 전체에서 # save-doc을 검색합니다.

문서에 'save-doc'ID가있는 요소가 여러 개 있으면 모두 트리거됩니다.

그러나 나는이 모든 입력에 의해 실행되는 여러 개의 양식이 계층화되어있을 수 있습니다.

편집 : 세 번째 가능성은 Pointy가 언급 한 것입니다. 이벤트 핸들러를 통해 제출을 실행하고 브라우저 동작으로 인해 발생하는 다른 제출을 실행합니다.

HTML과 무엇이로드되고 있는지 입력하십시오.

관련 문제