2012-10-25 2 views
0

나는 몇 시간 동안 봤지만 아무 것도 발견되지 않았다. 필사적으로 도움이 필요합니다.PHP를 통해 호출되는 자바 스크립트를 통해 양식 재설정

다음 요소가 포함 된 양식이 있습니다.

<?php 
if(mail($to, $subject,$message)) { 
    echo "<SCRIPT LANGUAGE='JavaScript'>alert('Your Enquiry was sent successfully we will get back to you shortly'); 
       window.location.href='javascript:history.go(-1)'; 
       document.enquiry.reset(); 
     </SCRIPT>"; 
} 
?> 

그런 다음 같은 코드 만 다른 메시지와 함께 "다른"거기 :

<form action="sendmail.php" method="post" name="enquiry"> 
    <table> 
     <tr> 
      <td>Name:-</td> 
      <td><input type="text" name="name" /></td> 
     </tr> 
     <tr> 
      <td>Company:-</td> 
      <td> <input type="text" name="company" /></td> 
     </tr> 
     <tr> 
      <td>E-Mail:-</td> 
      <td><input type="text" name="email" /></td> 
     </tr> 
     <tr> 
      <td>Contact:-</td> 
      <td> <input type="text" name="contact" /></td> 
     </tr> 
     <tr> 
      <td>Requirement:-</td> 
      <td><textarea name="msg"></textarea></td> 
     </tr> 
    </table> 
    <input type="submit" value="submit" onclick="return validation(this.form);"> 
    <input type="reset" value="Reset" /> 
</form> 

와 PHP는이 같은 라인을 가지고있다.

문제는 다시 양식 페이지로 리디렉션 할 때 여전히 필드에 데이터가있는 것입니다. 내가 선호하는 것은 사용자가 페이지로 돌아 왔을 때 데이터가 채워져 있지 않은 깨끗한 폼입니다.

자바 스크립트의 초보자이므로 이해하기 쉬운 픽스를 제안하십시오.

미리 감사드립니다.

+0

리디렉션 후 재설정이 진행 중입니다. –

+0

???? 해당 페이지가로드 된 다음 다시 설정됩니다. 그게 무슨 일이 일어날 지 생각 ... 어떻게 해결합니까 ?? 슬리지만 여전히 자바 스크립트에 새로운 – TDsouza

+1

'필사적으로 도움이 필요'- SO plicy에 따라 환영받을만한 언어입니까? –

답변

2

당신이이기 때문이다 역사 속으로 되돌아 간다 - 브라우저는 기억한다. 앞으로/앞으로 갈 때 양식.

"정상적인"사용자 경험이 아닙니다. "sendmail.php"파일에 감사하다는 말을 전하고 사용자가 원하는 곳으로 이동할 수있게 해줄 것을 제안합니다. 귀하의 사이트.

+1

+1을 확인하십시오. 위의 추가, 그냥 settimeout 5 초 말하고 다시 양식으로 리디렉션하십시오. 기록을 사용하지 마십시오. URL로 리다이렉트하면됩니다. – itachi

+0

감사합니다. 지금 i'v는 역사에 되돌아 가게되는 대신에 형태에의 링크를 뒤로 놓았다.. 잘 작동한다!! 그리고 나는 또한 당신이 제안한 감사 페이지에 대한 작업을 계획하고 있습니다! – TDsouza

+0

답변을 수락하는 중 ... 음 ...문제를 잘 설명해 주었지만 해결책은 어디 있습니까? (현명한 코드) – Dementic

1

문제는 자바 스크립트 코드입니다 :

window.location.href='javascript:history.go(-1)'; 
document.enquiry.reset(); 

것은이 코드를 제거

편집 :

사용이 코드 :

if(mail($to, $subject,$message)){?> 
    <SCRIPT LANGUAGE='JavaScript'> 
    alert('Your Enquiry was sent successfully we will get back to you shortly'); 
    window.location.href='/*YOUR FORM PAGE LINK*/'; 
    </SCRIPT> 
<?php } 
+0

은 그 이유가 될 수 있다는 느낌이 들었습니다 .. 모든 실험용 코드입니다. 제출 후 양식으로 다시 리디렉션하고 싶었지만 때로는 URL을 추가 할 때마다 오류가 발생했습니다 ... 무엇을 할 것인가? 같은 효과를 얻으려면 위의 코드를 바꿀 것을 제안합니까? – TDsouza

+0

@TDsouza 편집 –

1

에드가 말했듯이, 당신은 역사에 돌아갈 것이며, 브라우저는 그것을 기억합니다.

이 시도 : 대신이 라인의

을 : window.location.href='javascript:history.go(-1)';

쓰기 : window.location.href='RelativePathToActualForm';

+0

감사합니다! 그게 정확히 내가 한거야 .. 모든게 수정되었습니다 – TDsouza

0

다른 페이지로 리디렉션 (또는 다시 형태)와 메시지를 표시해야합니다 양식 게시물을 처리 한 후 이 예 :

php header("Location: form.php?formpostwassuccessful=1"); 

다음 폼 페이지

,
if(isset($_GET['formpostwassuccessful'])) 
    echo "Thank you. Your form was sent."; 

또한 redirect after post?

+0

이것은 끔찍한 생각입니다. 유효성 검사 대신 get 변수를 사용하여 흐름을 제어하는 ​​이유는 무엇입니까? – itachi

+0

@itachi - 그는 잘 모르기 때문에. – Dementic

+0

유효성 검사는 "양식 처리"의 의미입니다. 리디렉션은 사용자가 다시 탐색 할 때 양식이 브라우저에 다시 제출되지 않도록해야합니다. – cghamburg

0

간단한 솔루션을 참조하십시오 단지 jQuery를 사용 - 하나의 라인이 페이지에 jQuery를 포함하는 헤드 부분에 usee해야한다.

자바 스크립트는 포함해야했다 니펫을 : 대신

window.location.href='javascript:history.go(-1)'; 
       document.enquiry.reset(); 

window.location="theform_page_address" ; 

및 양식 페이지 주소 :

<script type="text/javascript"> 
    $(document).ready(function(){ 


    $('input').val(''); 
    $('select').val('-1'); 

    $('textarea').val(); 

    }); 

</script> 
다음 JS 머리 부분에 니펫을 추가

편집 : 양식에 inputtextarea 개의 요소가 있다고 가정합니다. 기본 값이 공백 인 select 요소는 기본 옵션의 값으로 -1을가집니다.

+0

고맙습니다. 단지 비슷한 작품을 매력처럼 !! 언어를 일찍 유감스럽게 생각합니다. – TDsouza

0
PHP 세션 기반의 플래시 메시지를 사용의 예에서

먼저 살펴 http://mikeeverhart.net/php/session-based-flash-messages/

일반적인 흐름 :

  1. 사용자는
  2. 프레스는
  3. 귀하의 PHP 스크립트 sendmail.php의 유효성을 확인하고 제출 형태로 채운다 양식
  4. 일부 유효성 검사 오류가있는 경우 [set error message]
  5. 일부 메일 전송 오류가있는 경우 [설정 오류 메시지]
  6. 모든 것이 정상이면 [설정 성공 메시지]
  7. php 리디렉션에서 양식 표시 페이지로 호출하십시오.

[설정 오류 | 성공 메시지] - 메시지 설정 방법에 제공된 링크를 사용하십시오.

이제 폼을 렌더링 할 때마다 중요한 부분이 있으므로 메시지가있는 경우 설정된 메시지가 있는지 확인해야합니다.

어떻게 이러한 메시지가 작동합니까? 단순히 메시지를 session ($ _SESSION) 배열에 설정하고 메시지가 표시되면 세션에서 메시지가 설정 해제됩니다.

관련 문제