Jump to content

Php jquery call not finishing ajax-success: php create file and email


exceedinglife

Recommended Posts

Hello all

I have a php and jquery/ajax call I am using to create a file/send an email. I get all the contents from my textboxes but I want a message to display on the screen afterwards being success or fail. In my .ajax call My call is exiting right before the ‘success:’  part. Why is my call not succeeding? Any tips/help will be appreciated

Thank you

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">&times;</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"];
}

 

Link to comment
Share on other sites

I got everything working now

 error: function (errorThrown) {
                //here is the status error code xhr, status, 
                console.log(errorThrown);
                alert(errorThrown);

I used this to find out what bugs I was getting.

I debugged everything now It works as I wanted it to. I do have a new question though about something else. Its something with css or Javascript so I will make a new post.

Thanks all for the help on this topic.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.