2013-10-06 1 views
0

메일을 보내는 기능이 있습니다. 여기있어. 모든 수표가 정정되면 마지막에 볼 수 있듯이 "보낸 이메일"을 울립니다. 사용자가 일부 입력을 컴파일하지 않으면 오류가 발생합니다.PHP : 페이지 상단으로 이동하지 않고 텍스트 인쇄

if(isset($_POST['submit'])) 
{ 

    $name = $_POST['name']; 
    $visitor_email = $_POST['email']; 
    ... BLAHBLAH 
    // Validation 
    if(empty($name)||empty($visitor_email)) 
    { 
     $errors .= "\n Field is mandatory. "; 
    } 
    if(IsInjected($visitor_email)) 
    { 
     $errors .= "\n Email format is wrong!"; 
    } 


    if(empty($errors)) 
    { 
     // send the email 
     $to = $your_email; 
     $subject="My subject"; 
     ... BLAH BLAH 

     $headers = "From: $from \r\n"; 

     mail($to, $subject, $body,$headers); 

     echo 'Email sent'; 
    } 
} 

이메일 전송이 정상적으로 작동합니다. 문제는이 양식이 jQuery 토글 된 div 안에 있다는 것입니다. 그리고 메시지를 표시해야 할 때 (필드가 필수이거나 전자 메일이 전송되었다는 오류 메시지 인 경우) 사용자는 페이지 상단으로 이동하고 토글 된 div (양식이있는 곳)로 리디렉션됩니다.) 가시성으로 돌아갑니다 : 숨김. 사용자가 페이지 상단으로 이동하지 않고 메시지를 인쇄하려면 어떻게해야합니까?

답변

0

우리는 당신의 jQuery 코드를 참조 할 필요가있다. 그러나 표시되는 것과 동일한 페이지에 양식을 제출하고 제출이 비동기 적으로 처리되지 않으면 페이지가 다시로드되어 상단에 "점프"하는 것처럼 보일 수 있습니다. POST를 통해 폼 제출을 처리하는 Ajax 메서드를 작성합니다. event.preventDefault();를 사용할 수 있습니다. 양식이 제출 될 때 페이지가 "점프"하지 않도록합니다. 영업 이익의 응답에 따라

업데이트 :

  1. 일시적으로 코드를 쇼를 제거하고 문의 양식을 숨 깁니다.

  2. 는 jQuery를 검증 플러그인을 구현 : 양식 처리기로 http://bassistance.de/jquery-plugins/jquery-plugin-validation을 :
    A.이 제출 버튼을 클릭 이벤트에이 플러그인에 대한 호출을 바인딩합니다.
    B. B. event.preventDefault()를 사용하십시오. 양식 제출을 중단하십시오.
    C. 성공하면 유효성 검사 플러그인이 Ajax 메서드를 호출하여 양식을 게시합니다.

  3. 양식을 작성하려면 Ajax 메소드를 작성하십시오. 이 메소드에는 두 개의 콜백이 있어야합니다.
    .done() - 양식이 성공적으로 게시 된 경우 실행합니다.
    .fail() - 오류가 있으면 실행합니다.

    완료된 방법에서 양식을 숨길 수 있습니다. 실패 메소드는 오류를 표시 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다! jQuery 코드는 쉽습니다 : http://pastebin.com/zEQKHaRc 버튼을 다시 쓸 수있게 도와 줄 수 있나요? 을 보냅니 까? 나는 JS에 익숙하지 않다. – MultiformeIngegno

+0

나는 당신의 대답에 따라 나의 대답을 업데이트했다. 당신은 약간의 연구를하고 jQuery 튜토리얼을 연습 할 필요가있을 것입니다.하지만 이것은 당신에게 확실한 게임 계획을 제공 할 것입니다. –

0

이 시도 .. 내가 jQuery.ajax()를 사용할 필요하지만 방법을 모르는 것 같다

$('#form').submit(function(e){ 
    e.preventDefault(); 

    //ajax code that send to server side here 
}) 
+0

답장을 보내 주셔서 감사합니다. 하지만 미안 .. 전문가가 아니야. '서버 측에 보내는 아약스 코드'가 무슨 뜻이야? 많은'input' (그리고 상대적'values ​​= "'")을 가진 폼이 있습니다. 그렇다면 나는 $ SOMETHING = $ _POST [ 'SOMETHING']을 가지고있다; 전자 메일 본문에 넣고 PHP 전자 메일 기능을 호출하는 기능이 포함되어 있습니다. – MultiformeIngegno

+0

다음과 같은 것이 필요합니다. http : //pastie.org/8391175 – Tomahock

관련 문제