2011-07-05 2 views
0

제가 양식을 가지고 있고 제출을 클릭하면 스크립트가 실행됩니다.jquery post 문제

 if(hasError == false) { 
     $(this).hide(); 
     $("#myForm").fadeOut("fast", function(){ 
      $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />'); 
     }); 

     $.post("mail.php", 
      { emailFrom: emailFromVal, emailName: nameVal, emailMessage: messageVal }, 
       function(data){ 
        $("#loadingImage").fadeOut("fast", function() {     
         $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');            
        }); 
       } 
      ); 
    } 

양식이 제출, 로딩 이미지를 표시합니다 ... 그리고 유지! : 코드의

부분은 로딩 이미지가 표시되는 동안에

내가 방화범을 사용하는 경우

, 콘솔에 입력 :

$("#loadingImage").fadeOut("fast", function() {     
         $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');   

이미지가 사라지고 텍스트가 나타납니다.

왜?

덕분에 많은

참고 : 이메일이 문제는 모든 DOM 요소의 jQuery 방법과 바인더 제본 된 후 새로운 요소가 추가 된 점이다

+0

'$ .post()'에 전달 된 콜백은 요청이 성공했을 때만 실행됩니다 - mail.php가 200 OK를 반환합니까? –

답변

1

전송됩니다. 동적 요소는 일단로드되면 바인드해야합니다. 가장 빠른 해결책은 첫 번째 페이드 아웃은 IMG 후 종료됩니다

<img src="../images/loading.gif" alt="Loading" id="loadingImage" style="display:none" /> 
+0

고마워요. 나는 두 가지 해결책에 지쳤으며 도움이되지 못했습니다. 아직로드중인 이미지가 표시됩니다. 이메일을 보냈습니다. FireBug를 사용하는 방법을 모르지만 오류가없는 것처럼 보입니다. 또한 POST mail.php는 200 OK를 반환합니다. 그러나 '응답'탭의 아무 것도 ... – Olivier

+0

FireBug의 응답 탭에 표시 할 내용이 있으면 mail.php에서 텍스트를 보내야합니다. 아마도 스크립트의 끝 부분에 "보낸 메시지"라고 표시됩니다. 또한 $ ("# loadingImage")를 실행하기 전에 경고를 추가하여 콜백 내에서 코드가 실행되고 있는지 확인할 수 있습니다. fadeOut, ex : alert ("ok를 클릭하면 이미지가 사라집니다"); –

1

페이지가로드가 생성 될 때 jQuery를이 요소를 결합 할 수 있도록 페이지의 HTML을 추가하는 것입니다. 당신은 수행해야합니다

if(hasError == false) { 
     $(this).hide(); 
     $("#myForm").fadeOut("fast", function(){ 
      $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />'); 
      $.post("mail.php", { emailFrom: emailFromVal, emailName: nameVal, emailMessage: messageVal }, 
       function(data){ 
        $("#loadingImage").fadeOut("fast", function() {     
         $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');            
        }); 
       } 
      );   
     }); 
} 

당신이 볼 수 있듯이

는, 우리는 첫 번째 fadeOut() 콜백 함수에 $.post() 전화를 옮겼습니다.

희망이 도움이됩니다. 건배

+0

죄송합니다. 그것은 작동합니다. Google 크롬을 사용해 보았습니다. 캐싱 시스템에 문제가 있다고 확신합니다. 두 해결 방법을 모두 적용했습니다. 1- 나는 내 페이지에 img 태그를 추가했으며 Edgar의 조언에 따라 스크립트를 변경했습니다 (영향을 미칠지도 모름). 이것에 대한 귀하의 빠른 도움을 많이 주셔서 감사합니다. – Olivier