2013-01-06 5 views
-2

최근에 연락처 양식에 대한 PHP 설정을 직접 작성했습니다. 사용자가 양식을 제출 한 후 PHP 파일이 경고에 대한 JavaScript 에코를 전송합니다. 감사합니다!라는 팝업이 나오지만, 웬일인지 JavaScript 경고와 함께 새 창이 열립니다. 나는 성공적으로 제출시 팝업을 사용자에게 경고하기 위해 스크립트를 삽입 위치를JavaScript 폼의 JavaScript 결과가 다른 창에서 열림

<?php 
$firstname = $_POST['firstName']; 
$lastname = $_POST['lastName']; 
$email = $_POST['email']; 
$tel1 = $_POST['tel1']; 
$tel2 = $_POST['tel2']; 
$tel3 = $_POST['tel3']; 
$reason = $_POST['reason']; 
$message = $_POST['text']; 
$formcontent="From: $firstname $lastname \n Email address: $email \n Telephone Number: $tel1 $tel2 $tel3 \n Reason: $reason \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
echo "<script>alert('Thank you!');</script>"; 
?> 

에코 명령을 마지막 줄은 다음과 같습니다

내 PHP 파일의 코드입니다. 당신이 더 좋은 아이디어를 가지고 있다면 좋겠지 만, PHP를 열어서 새로운 창이 열리는 이유를 알고 싶습니다.

현재 구현 및 문제는 this site에서 볼 수 있습니다.

양식을 처리하기 위해 양식 데이터를 제출하기 만하면되므로 각 상자에 사실적인 내용을 넣어 두십시오.

도움을 주시면 감사하겠습니다.

+0

여기서 HTML 코드는 무엇입니까? –

+0

새 PHP 코드 창에서 두 번째 줄을 가져와 새 창을 열지 않고 팝업을 불러 오지 않고 현재 질문에있는 링크의 현재 양식에 팝업을 표시하기 때문에 HTML 코드가 문제가되지 않습니다. . –

+1

아약스 양식을 원하는 것 같습니다. – Musa

답변

0

mail.php에 양식을 제출하면 mail.php가 html 요청을 처리하고 페이지를 인쇄합니다. 귀하가 제출 한 페이지가 <script>alert('Thank you!');</script>

입니다. 새 페이지를 열지 않으려는 것처럼 보이기 때문에 mail.php 페이지로 ajax 전화를 걸면 양식을 한 번 호출 할 수 있습니다 이 (가) 성공적으로 제출되었습니다.

jQuery를이 ajax function 또는 문제입니다 post function

+0

jQuery가 소스에서 발견 된 후에 jQuery로 바 꾸었습니다. – GrayB

+0

같은 창에서 알려줍니다! –

+0

페이지 리디렉션을 원하지 않으면 ajax() 함수를 사용해야합니다! –

0

귀하의 HTML이있다. 'contact.html'에

<form id="form" action="mail.php" method="post"> 

, 그래서 당신이 양식을 제출하면로드 'mail.php'.

AJAX 양식을 원하거나 적어도 같은 페이지에 양식을로드하십시오. jQuery를 사용하면 같은 것을 수행 할 수 있습니다 적어도

$('.submitButton').click(function(){ 
    $.get('mail.php',$("#form").serialize(), function(data){ 
     alert(data); 
    }); 
}); 

을, 당신은 (if($_SERVER['REQUEST_METHOD']=='POST'){})를 접촉 페이지의 상단에있는 mail.php 코드를 넣고 양식을 제출 있는지 확인하기 위해 검사를 추가 할 수 있습니다 contact.html을 contact.php로 업데이트 한 다음 'mail.php'대신 'contact.php'로 리디렉션해야합니다. 그런 다음 메일이 동일한 페이지에로드되고 알림이 표시되며 콘텐츠도 표시되며 조정할 수 있지만 제대로 표시 할 수 있습니다.

행운을 빈다. Mail.php

$_SESSION['mail_msg']="Thank You"; 
header("Location: contact.php"); 

연락처로 저장 contact.html에서 :

+0

코드를 설명 할 수 있습니까? jQuery 언어에 익숙하지 않습니다. –

+0

jQuery는 라이브러리입니다. Javascript가 언어입니다. 기본적으로 submitButton 클래스를 취한 다음 mail.php 페이지에 AJAX get 함수를 실행 한 다음 검색된 데이터를 기반으로 함수를 실행합니다. 온라인에서 한두 개의 자습서를 쉽게 찾을 수 있습니다. –

+0

나는 그것을 상당히 잘 설명했다. jQuery를 읽고 쉽게 이해할 수 있으므로 단계별로 단계별로 설명하지 않겠습니다. SO 사용자가 자신을 위해 모든 작업을 수행 할 것으로 기대하지 마십시오. 우리는 올바른 방향으로 당신을 가리키며 길을 따라 어떤 오류도 수정하기 위해 여기에 왔습니다. –

1
$(function() { // $(document).ready(function() { }); this function prepares itself to be attentive to listen an event when the DOM is ready 
$("#form").on("submit", function(e) { // As the form is submitted, the function is executed 
e.preventDefault(); // this prevents the form to be submitted as default behaviour! 
var s = $(this).serialize(); // makes a string which has all form's data in this form e.g. ?id=1&name=Heart 
$.ajax({ // create an jQuery ajax call 
    url : 'mail.php'+s, // this will transfer data to the mail.php. In mail.php, use $_GET with all variables 
    cache : false, // changing browser cache 
    success : function(data) { // success means when the ajax completed transfer of variables and that function with data as an argument is callback variable which stores all the information echoed in php file 
      alert(data); // now you can manipulate that variable, i use alert function 
    }, 
    error : function() { // this function checks if error occurs in the ajax transfer, if yes, then execute a certain function! 
      alert("Form Not Submitted"); // I have just alerted not submitted! 
    }; 
}); 
}); 

또한

+0

글쎄, 나는 긴 설명을했다. 그렇지 않으면 조금 더 설명 할 수 있습니다! –

+1

양식 제출을 중단하는 것을 잊었습니다. – Musa

+0

오, 고마워 친구 @ 뮤사! –

0

당신은 코드를 사용할 수 있습니다 Here을 찾을 수 있습니다 jQuery를 최신 버전을 포함해야합니다.PHP를 추가하고 다음 코드를 추가하십시오.

if(isset($_SESSION['mail_msg'])){ 
echo "<script type='text/javascript'>alert("{$_SESSION['mail_msg']}")</script>"; 
} 

두 파일 모두에서 세션을 시작하는 것을 잊지 마십시오.

관련 문제