Вызовите функцию JavaScript в PHP-файле и загрузите HTML-файл после? - PullRequest
0 голосов
/ 13 декабря 2018

Мне нужно вызвать функцию js в моем php, но она не работает.Может кто-нибудь сказать мне, что я делаю не так?Как я могу сделать это простым способом?

Спасибо!

У меня есть три файла:

mail.php

Ответственный за отправку моих материалов $ _POST (работает нормально).Я вызываю функцию javascript для переключения модального режима в зависимости от того, отправлено письмо или нет.

 <? 
    ...
    $response = $sendgrid->send($email);
    if ($response) {
        echo '<script type="text/javascript">',
            'confirmaEnvio();',
        '</script>';
         header('Location: /contato');
    }
    else {
        echo '<script type="text/javascript">',
            'falhaEnvio();',
        '</script>';
         header('Location: /contato');
    }
?>

functions.js

Две функции, одна из которых переключает модал с помощьютекст, сообщающий о том, что письмо было отправлено, один из которых включает модальный текст, сообщающий, что письмо не было отправлено.

function confirmaEnvio () {
    $("#modal").find(".modal-body").text("Mensagem enviada com sucesso!");
    $("#modal").modal("show");
}
function falhaEnvio() {
    $("#modal").find(".modal-body").text("Erro!");
    $("#modal").modal("show");
}

view.html

Форма отправки данных вmail.php используя POST

<form name="contato" method="post" action="../php/mail.php">
   <div class="form-group row">
        <label for="email" class="col-sm-2 col-form-label">Email</label>
        <div class="col-sm-10">
          <input type="email" class="form-control" id="email" name="email" placeholder="Email" required>
        </div>
   </div>
   <div class="form-group row">
      <label for="name" class="col-sm-2 col-form-label">Nome</label>
      <div class="col-sm-10">
         <input type="text" class="form-control" id="name" name="name" placeholder="Nome" required>
       </div>
    </div>
    <div class="form-group row">
       <label for="msg" class="col-sm-2 col-form-label">Mensagem</label>
       <div class="col-sm-10">
          <textarea class="form-control" name ="msg" rows="10" id="msg" placeholder="Mensagem" required></textarea>
       </div>
    </div>
    <div class="form-group row">
       <div class="col-sm-10">
          <button type="submit" name="submit" class="btn">Enviar</button>
       </div>
     </div>

мой модал, тот же файл, view.html

<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>
        <div class="modal-body">

        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          <button type="button" class="btn btn-primary">Save changes</button>
        </div>
      </div>
    </div>
  </div>

1 Ответ

0 голосов
/ 13 декабря 2018

Это кажется странным способом вызова функции Javascript в результате вызова php.Похоже, вы вызываете функцию Javascript, а затем сразу же загружаете новую страницу.Таким образом, даже если Javascript начнет выполняться, он будет сброшен, как только загрузится новая страница.

Лучшим подходом было бы вызвать функцию php из Javascript, а затем ответить на основе ответа от функции php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...