2010-03-05 2 views
7

내 코드는 "return false"대신에 "result"에 포함 된 데이터가 말하는 경우 허용하고 싶습니다. 이것을 어떻게 할 수 있습니까?

답변

3

이처럼 할 수있는 :

다시 게시하고 떠난다 때문에
$.ajax({ 
    url: 'add.html', 
    data: $('#post_form').serialize(), 
    dataType: 'json', 
    type: 'post', 
    success: function(result) { 
     retVal = formCheck(result); 
     if(retVal) 
      $('#post_form').unbind('submit').submit(); 
     else 
      alert('Error with your form! Oh crap!'); 
    } 
}); 

, 이것은 단지 성공하면이 핸들러를 바인드 해제하고 호출 할 때 일반적으로 발생 제출할 수 있습니다, 그래서 코드 실행하지 않고 다시 확인하지 않으면 제출 만합니다.

+0

jquery에서 먼저 바인딩을 해제해야합니까? 그것은 양식을 정확하게 다시 낭비하는 어느 쪽이든을 제출할 것입니까? –

+0

@Jeff - 전송 처리기에서 발생하기 때문에 그렇지 않은 경우이 코드가 다시 실행됩니다. –

+0

@ 닉 감사하지만 그것을 반환 false를 실행하는 경우에도 여전히 제출할 것이다; 옳은? –

0
 
    success: function(result) { 
     ... 
     document.forms.post_form.submit(); 
    } 
2

일반적인 양식 제출을 방지하기 위해 항상 이벤트 처리자 끝에 false을 반환하는 것이 좋습니다. 제출 핸들러가 $.ajax 호출은 다음 코드 때문에, 실행이 비현실적 완료되기 전에 해고

$('#post_form').submit(function() { 
    $("#ajax_bar_loader").show(); 
    $.ajax({ 
     url: 'add.html', 
     data: $('#post_form').serialize(), 
     dataType: 'json', 
     type: 'post', 
     success: function(result) { 
      if(result == 'something') { 
       alert("some error happened"); 
      } else { 
       // assuming we're visiting the form's action 
       window.location.href = $(this).attr("action"); 
      } 
     } 
    }); 
    return false; 
}); 

성공 콜백에 의존 : $.ajax에 성공 콜백 내에서 조건부 서버의 응답을 기반으로 리디렉션 수 성공 콜백이 실행되기 전에 평가 될 가능성이 매우 높습니다 ($.ajax은 비동기 적으로 실행됩니다).

+0

하지만 실제로 양식 데이터를 양식의 동작에 제출하지는 않습니까? –

0

이 문제가 제대로 작동하는지 확신 할 수 없지만 AJAX 요청을 동기식으로 만든 경우 어떻게해야합니까?

나는이 "작업"더미 코드를 가지고, 그것은 아약스 요청을 발생시킨 다음 부울을 설정합니다. 그런 다음 양식은 부울을 기반으로 true 또는 false를 반환합니다.

$(document).ready(function() { 
    $('form').submit(function() { 
     var should_return = false; 
     $.ajax({ 
      async: false, 
      url: 'test.php', 
      type: 'post', 
      success: function() { 
       // Do some type of check 
       should_return = true; 
      } 
     }); 
     return should_return; 
    }); 
}); 
관련 문제