【问题标题】:Reload the page after mailform contact.php successmailform contact.php 成功后重新加载页面
【发布时间】:2018-06-20 05:54:05
【问题描述】:

mailform contact.php 成功后重新加载页面.. :(

我使用了 validate.js.. 验证.js。这是个问题吗?

对不起,我会给你看代码。请教

html

 <form id="contactform" action="contact.php" method="post" class="validateform" name="send-contact">
   <div id="sendmessage">
      thanks
   </div>
   <div class="controls">
      <div class="row">
         <div class="col-md-12">
            <div class="form-group">
               <input type="text" name="subject" data-rule="subject" data-msg="" placeholder="hi~"/>
               <div class="help-block with-errors"></div>
            </div>
         </div>
      </div>
      <div class="col-md-12">
         <input type="submit" class="btn btn-success btn-send" value="Send message" >
      </div>
   </div>
   </div>
</form>

contact.php

<?php

$headers = array('Content-Type: text/plain; charset="UTF-8";', 
    "From: ". $_POST['name'] . "<". $_REQUEST['email'].">", 
); 

mail($sendTo, $subject, $emailText, implode("\n", $headers));

$responseArray = array('type' => 'success', 'message' => $okMessage);

catch (\Exception $e) {
   $responseArray = array('type' => 'danger', 'message' => $errorMessage);
}

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
   $encoded = json_encode($responseArray);

   header('Content-Type: application/json');

   echo $encoded;
}
else {
   echo $responseArray['message'];
}

最后是代码

$(function () {

$('#contact-form').validator();

$('#contact-form').on('submit', function (e) {
    if (!e.isDefaultPrevented()) {
        var url = "contact.php";

        $.ajax({
            type: "POST",
            url: url,
            data: $(this).serialize(),
            success: function (data)
            {
                var messageAlert = 'alert-' + data.type;
                var messageText = data.message;

                var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
                if (messageAlert && messageText) {
                    $('#contact-form').find('.messages').html(alertBox);
                    $('#contact-form')[0].reset();
                }
            }
        });
        return false;
    }
})
        });

有什么问题? mailform contact.php 成功后重新加载页面.. :(

我使用了 validate.js.. 验证.js。这是个问题吗?

对不起,我会给你看代码。请教

【问题讨论】:

  • 你到底有什么问题。要具体。
  • 如果您向服务器端发出 ajax 请求,这意味着您应该在 .js 中重新加载有关服务器端响应的页面。
  • 老兄,它是一个 AJAX 调用,而 ajax 反对页面重新加载或重定向。
  • 如果您认为某个答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于将注意力集中在仍然没有答案的旧 SO 上。顺便说一句,您可以清楚地看到另一个答案只是我的副本。

标签: php mail-form


【解决方案1】:

要在 ajax 调用后重新加载页面,你可以使用这个,把它放到你的 ajax 调用中:

location.reload();

使用您的代码:

$.ajax({
    type: "POST",
    url: url,
    data: $(this).serialize(),
    success: function (data)
    {
        var messageAlert = 'alert-' + data.type;
        var messageText = data.message;

        var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
        if (messageAlert && messageText) {
            $('#contact-form').find('.messages').html(alertBox);
            $('#contact-form')[0].reset();
        }

        location.reload();
    }
});

【讨论】:

    【解决方案2】:

    location.reload();

    使用此代码

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 2018-05-09
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多