0
ajax를 사용하여 페이지를 새로 고칠 필요가없는 동안 사용자가 저에게 이메일을 보낼 수 있도록 작동하는 연락처 양식이 있습니다.phpmailer & ajax : 메일 첨부 파일
내 사용자가 이메일에 파일을 첨부 할 수있는 옵션을 제공하고 싶지만 Ajax로 데이터를 처리하는 방법으로는 다소 분실했습니다. 여기
은 접촉 형태 :<form id="contact-form" method="post" action="/handler.php?ajax=contact">
<input type="email" name="contact-email" id="contact-email" />
<select name="contact-category" id="contact-category">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" name="contact-subject" id="contact-subject" />
<textarea name="contact-message"></textarea>
<input type="file" name="contact-attachment" id="contact-attachment" />
<button class="btn-classic btn-orange"><i class="fa fa-paper-plane"></i> send</button>
</form>
아약스 기능 :
$(function(contactSubmit) {
var contactForm = $('#tab-contact #contact-form');
var contactCallback = $('#tab-contact #contact-callback');
$(contactForm).submit(function(event) {
event.preventDefault();
var contactData = $(contactForm).serialize();
$.ajax({
type: 'POST',
url: $(contactForm).attr('action'),
data: contactData,
}).done(function(response) {
$("#contact-callback").addClass("success");
}).fail(function(data) {
$("#contact-callback").addClass("fail");
});
});
});
데이터를 확인하고 메일 전송하는 2 개 PHP 함수 그러나
<?php
public static function contact() {
$mail_from_email = filter_var(trim($_POST['contact-email']), FILTER_SANITIZE_EMAIL);
$mail_from_name = 'User1';
$mail_to_email = '[email protected]';
$mail_to_name = 'Webmaster';
$mail_subject = '['.$_POST['contact-category'].'] '.trim($_POST['contact-subject']);
$mail_body = trim($_POST['contact-message']);
$mail_attachment = $_FILES['contact-attachment'];
$sendMail = action::sendMail($mail_from_email, $mail_from_name, $mail_to_email, $mail_to_name, $mail_subject, $mail_body, $mail_attachment);
}
public static function sendMail($mail_from_email, $mail_from_name, $mail_to_email, $mail_to_name, $mail_subject, $mail_body, $mail_attachment) {
require $_SERVER['DOCUMENT_ROOT'].'/phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = config::get('mail_smtp_host'); // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = config::get('mail_smtp_username'); // SMTP username
$mail->Password = config::get('mail_smtp_password'); // SMTP password
$mail->SMTPSecure = config::get('mail_smtp_security'); // Enable TLS encryption, `ssl` also accepted
$mail->Port = config::get('mail_smtp_port'); // TCP port to connect to
$mail->setFrom($mail_to_email, $mail_from_name);
$mail->addAddress($mail_to_email, $mail_to_name); // Add a recipient
$mail->addAddress(''); // Name is optional
$mail->addReplyTo($mail_from_email, $mail_from_name);
$mail->addCC('');
$mail->addBCC('');
$mail->addAttachment($mail_attachment); // Add attachments
$mail->addAttachment(''); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $mail_subject;
$mail->Body = $mail_body;
$mail->AltBody = '';
if(!$mail->send()) {
return $mail->ErrorInfo;
} else {
return true;
}
}
?>
을 1 단계에서 갇혀 있었어 : 내 PHP 함수는 파일 입력에서 데이터를 검색 할 수 없습니다, 그것은 아약스 것 같습니다 이 입력 필드에 관한 정보를 보내지 마십시오.
PHP는 Undefined index: contact-attachment
을 반환합니다.
아무도 도와 줄 수 없습니까? 현재 코드에 어떤 문제가 있습니까?
감사를 교체 contact- 첨부 파일 ' – eloism
바꾸기 var contactD ata = $ (contactForm) .serialize(); with var contactData = new FormData (contactForm); – Rahi
지금 "불법 호출"을 받고 있습니다 – eloism