2010-07-29 2 views
0

나는 부울 값을 반환하는 다른 함수를 반환하는 함수가 있는데, 여기에서는 비정상적인 동작을 일으키는 유효성 검사를 수행합니다.

$.post("classes/InsertCustomer.php", 
    { iResult: theResult.valid }, 
    function(data) 
    { 
    alert(data); 
    }); 
return true; 

이 실행되면, 게시물이 발생하지만 아무것도 반환하지 않습니다를 다음과 같이

기능의 코드입니다. 그러나 마지막 줄이 "return false"이면 게시물이 완벽하게 실행되고 PHP 파일에서 데이터가 반환됩니다. PHP 코드를 전혀 변경하지 않고 자바 스크립트에서 true와 false를 반환합니다.

실용적인 이유가 있습니까?

+0

자바 스크립트를 더 많이 표시 할 수 있습니까? – Nalum

+0

먼저 "아무 것도 반환하지 않습니다"라고 말하면 알림()에 빈 상자가 표시되거나 알림이 전혀 표시되지 않는다는 의미입니까? 둘째, 경고를 포함하는 함수 ($ .post에 전달 된 콜백)가 이미 * 반환 된 * 함수를 포함하는 함수가 이미 반환되었고 호출자가 실행을 마친 후에 실현됩니다. 나는 이것이 매우 흔한 실수이기 때문에 ... – Shog9

답변

1

반환 값은 이벤트의 기본 동작을 차단합니다. 예를 들어, 링크를 누르거나 양식을 제출할 때이 JS 함수를 호출하는 경우 return true은 링크 또는 양식 요소에 지시 된 기본 작업을 계속 수행하도록 지시합니다 (예 : 링크 href 또는 양식 action). 너의 것이 동일한 페이지로 가고 기본적으로 페이지를 새로 고칠 큰 기회. return false을하면 차단되며 같은 페이지에 머무르게됩니다.

눈에 거슬리지 않는 JS에서는 동기 동작을 비동기 (ajaxical) 동작으로 대체 할 때 종종 return false을 선호합니다. 그러나 정상적인 품질 저하의 경우 JS가 비활성화되어있을 때 (예 : returns true처럼) 현재 작동하지 않는 경우에도 잘 작동하도록주의해야합니다. 웹 브라우저에서 JS를 비활성화하고 다시 테스트하십시오. 그런 상황에서 모든 것을 잘하고 싶습니다.

+0

젠장, 너는 10 분 동안 나를 때려. 새 답변을 알리는 데 너무 늦었다. ;-) 나는 당신이 기본적으로 나와 똑같이 말했기 때문에 당신에게 +1해야한다. :) – Chris

0

"true"가 아닌 ajax 양식 제출을 시도하기 위해 onsubmit에서 실행됩니까? "return true"는 $ .post의 일부가 아니므로 기본 동작을 계속하기 위해 어떤 이벤트 처리기라도 알려주고 있습니다.

양식 제출 인 경우 위의 경우 양식이 기본 위치 (양식 자체)로 제출됩니다. 이로 인해 효과적으로 페이지가 다시로드되어 .post 응답을 기다리는 이벤트 핸들러가 손실 될 수 있습니다.

false를 반환하도록 설정하면 기본 동작 (제출)을 수행하지 않도록 페이지에 알려주므로 게시물 완료 이벤트 처리기 시간을 완료하고 실행하는 페이지에 남아있게됩니다.

관련 문제