TheBigBearNow Ответов: 1

PHP и JQuery с призывом не отделка Аякс-успех: в PHP создать файл и написать


Всем привет
У меня есть вызов php и jquery/ajax, который я использую для создания файла/отправки электронной почты. Я получаю все содержимое из своих текстовых полей, но хочу, чтобы после этого на экране появилось сообщение об успехе или неудаче. В моем вызове .ajax мой вызов завершается прямо перед частью " успех:’. Почему мой призыв не увенчался успехом? Любые советы/помощь будут оценены по достоинству
Спасибо
Html page just a form with a submit button
$(document).ready(function () {
    var form = $("#formData");
    
    $(form).on("submit", function (event) {
        event.preventDefault();
        $.ajax({
            type: "post",
            url: "file.php",
            data: $(this).serialize(),
            beforeSend: function () {
                $("#status").html('<span style="color:red;">Loading everything actually creating a .TXT file of contents...</span>')  //--works
            },
            success: function (data) { 
                var responseMsgType = "alert-" + data.type;
                var responseMsgText = data.message;
                // message below
                var alertBox = '<div class="alert ' + responseMsgType + ' alert-dismissable"><button type="button" class="close" ' +
                    'data-dismiss="alert" aria-hidden="true">×</button>' + responseMsgText + '</div>';
                if (responseMsgType && responseMsgText) {
                    $(form).find(".successArea").html(alertBox);
                    $(form)[0].reset();
                }
            }
        });
        return false;
    });
<?php
$controls = array('txtName' => 'Name', 'txtEmail' => 'Email', 'txtSubject' => 'Subject', 'txtMessage' => 'Message');
try {
	if(count($_POST)==0) { throw new \Exception ('Contact Form Message is empty'); }

	$headers = array('Content-Type: text/plain; charset="UTF-8";',
					 'From: ' . $email,
					 'Reply-To: ' . $email,
					 'Return-Path: ' .$email);

	$emailMessage = "You have a new message from your contact form" . PHP_EOL;
	$emailMessage .= "-------------------------------------------------------" . PHP_EOL;

	foreach($_POST as $key => $value){
        if(isset($controls[$key])) {
            $emailMessage .= "$controls[$key]: $value". PHP_EOL;
        }
    }
$mailMsg = "email6.txt";
	if(file_exists($filename) == false) {
		$fh = fopen($mailMsg, "w");
		fwrite($fh, $headers);
		fwrite($fh, $emailMessage);
		fclose($fh);
	} else {
		$fhexists = fopen($filename, "a");
		fwrite($fhexists, $content);
		fclose($fhexists);
	}

	$responseMessage = array("type" => "success", "message" => $successMessage);
}
catch (\Exception $ex) {
	$responseMessage = array("type" => "errorM", "message" => $errorMessage);
}
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
	$encodedJSON = json_encode($responseMessage);
	header("Content-Type: application/json");
	echo $encodedJSON;
} else {
	echo $responseMessage["message"];
}


Что я уже пробовал:

текстовый файл работает, но электронная почта мне нужна на сервере, который я читаю. Я хочу, чтобы сообщение об успехе появилось на html-части #successArea-это просто
у меня есть тестовые коды, всплывающие в #status

1 Ответов

Рейтинг:
7

TheBigBearNow

В своем вызове ajax я добавил

beforeSend: function () {


Я использовал это, чтобы убедиться, что мой ajax действительно вызывается

После моего успеха:

Я добавил: -

error: function (errorThrown) { console.log(errorThrown); }