Как выполнить PHP-адрес электронной почты script с помощью AJAX? [Текущий код не работает]

После просмотра stackoverflow и нескольких других сайтов для решения моей проблемы я придумал AJAX и PHP-адрес электронной почты script с помощью SwiftMailer.

Насколько мне известно, мой AJAX не работает, поэтому PHP script никогда не выполняется.

Мой вопрос: правильно ли я использую AJAX для выполнения моего script? Кроме того, есть ли способ достичь желаемого результата?

Контекст: Я работаю над проектом школьной курсовой работы, основанной на расписании/рота-сайте для семей. Я в значительной степени достиг стандартов для первой сборки и решил добавить функцию отправки электронной почты, когда запланировано задание.

Электронная почта script (домен был подвергнут цензуре):

<?php

$setBy = $_GET['setBy'];
$jobEmail = $_GET['jobEmail'];
$subject = $_GET['emailSub'];
$content = $_GET['emailContent'];

$headers = 'From: [email protected]*****' . "\r\n" .
        'Reply-To: [email protected]*****' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();


require_once '../swiftmailer/lib/swift_required.php';
$transport = Swift_MailTransport::newInstance();
// Create the message
$message = Swift_Message::newInstance();
$message->setTo(array(
    $jobEmail => "MyFamilyRota User",
));
$message->setSubject($subject);
$message->setBody($emailContent);
$message->setFrom("[email protected]*****", "MyFamilyRota");
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);

Часть электронной почты работает отлично, но приводит к медленной работе страницы, когда она находится на фактическом графике .php из-за отправки электронной почты с длительным периодом времени. Поэтому мое желание подтолкнуть функции электронной почты к альтернативному script, который будет обрабатывать его, не замедляя работу пользователя.

My AJAX/PHP (не включает весь файл, поскольку проблема связана со следующим разделом):

$emailContent = "Assigned Job: $jobName\nJob Description: $jobDesc\nAssigned By: $setBy\nStart Time: $time_start\nEnd Time: $time_end\n";
    $emailContent = wordwrap($emailContent, $words = 70);
    $subject = "New Job Assigned: $jobName!";
    ?>
    <script type="text/javascript" src="jquery-3.1.0.js"></script>
    <script type="text/javascript">
        function sendEmail() {
            $.ajax({
                method: 'get',
                url: "job_email.php",
                data: {
                    'setBy': <?php $setBy ?>,
                    'useremail': <?php $emailRow[0] ?>,
                    'emailContent': <?php $emailContent ?>,
                    'emailSub': <?php $subject ?>
                },
                success: function () {
                    alert("done");
                }});
        }
    </script>
    <?php
    echo "<script type='text/javascript'>sendEmail();</script>";

Является ли это правильным способом выполнения php script с AJAX или я сделал что-то совершенно неправильное?

(Прошу извинить любой неэффективный код или плохую практику. Я относительно новичок в PHP и веб-разработке, поэтому понимаю, что некоторые разделы моего кода могут быть неаккуратными.)

EDIT - форма отправки данных:

<form id='login' action='jobAssigner.php' method='post' accept-charset='UTF-8'>
    <fieldset>
        <legend>Assign Job To <?php echo $_SESSION['assignee_name'] ?></legend>
        <input type='hidden' name='submitted' id='submitted' value='1'/>
        <label for='jobSelect'>Job Selection:</label>
        <?php echo $select; ?>
        <br />
        <label for='time_start'>Job Start:</label>
        <input type='datetime-local' name='time_start' id='time_start' value=''/>
        <br />
        <label for='time_end'>Job End:</label>
        <input type='datetime-local' name='time_end' id='time_end' value=''/>
        <br />
        <input type='submit' name='assign' id='assign' value='Assign!' />
    </fieldset>
</form>

Все это должно работать, поскольку задания добавляются в базу данных и отображаются в списке предстоящих заданий.

UPDATE:

После исправления нескольких ошибок с моим кодом я достиг новой ошибки, но теперь работает функция AJAX.

Функция AJAX возвращается с ошибкой: POST http://******.com/home/job_email.php 500 (Внутренняя ошибка сервера) send @jquery-3.1.0.js: 9392ajax @jquery- 3.1.0.js: 8999sendEmail @jobAssigner.php: 4 (анонимная функция) @jobAssigner.php: 18

NEW AJAX:

function sendEmail() {
            $.ajax({
                method: 'POST',
                url: "job_email.php",
                data: {
                    'setBy': '<?php echo $newSetBy ?>',
                    'useremail': '<?php echo $emailRow[0] ?>',
                    'emailContent': '<?php echo $emailContent ?>',
                    'emailSub': '<?php echo $subject ?>'
                },
                success: function () {
                    alert("done");
                }});
        }
    </script>
    <?php
    echo "<script type='text/javascript'>sendEmail();</script>";

UPDATE:

Спасибо всем за их вклад!:) Ошибка 500 была результатом изменений имени переменной во время процесса исходного вопроса. Теперь все исправлено.

+4
источник поделиться
1 ответ

Взгляните на источник страницы для AJAX и PHP, чтобы узнать, какой PHP создан для вас.

Я ожидаю, что ваша функция AJAX будет отображаться следующим образом:

<script type="text/javascript">
        function sendEmail() {
            $.ajax({
                method: 'get',
                url: "job_email.php",
                data: {
                    'setBy': ,
                    'useremail': ,
                    'emailContent': ,
                    'emailSub': 
                },
                success: function () {
                    alert("done");
                }});
        }
    </script>

Проблема становится гораздо более очевидной, поскольку на самом деле это не отправка каких-либо данных. Вы пытались предоставить эти данные с PHP на Javascript с помощью <?php $setBy ?> и т.д., Но это на самом деле не выводит его - для его фактического вывода вы должны echo его.

<?php echo $setBy ?>
+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос