You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

联系表单提交成功消息显示在PHP页面而非HTML页面问题求助

问题修复:联系表单提交后跳转至PHP页面显示提示

问题现象

提交联系表单后,成功提示Contact form successfully submitted. Thank you, I will get back to you soon!直接显示在ebsg.php页面,而非原HTML表单所在页面。

核心原因

当前JS代码仅模拟本地提示,并未通过AJAX向PHP发送实际表单数据,表单仍触发默认提交跳转;同时PHP端仅在AJAX请求时返回JSON,非AJAX请求直接输出文本,导致跳转后显示提示。

修复方案

步骤1:修改JS代码,实现AJAX异步提交

替换原JS逻辑,阻止表单默认提交,通过AJAX发送所有表单数据(包括reCAPTCHA响应),并根据PHP返回的JSON响应在原页面渲染提示:

$(function() {
  // 初始化表单验证
  $("#contact-form").validator();

  // 监听表单提交事件
  $("#contact-form").on("submit", function(e) {
    // 阻止默认提交行为
    e.preventDefault();
    
    // 如果验证通过
    if (!e.isDefaultPrevented()) {
      var $form = $(this);
      var url = $form.attr("action");

      // 发送AJAX请求
      $.ajax({
        type: "POST",
        url: url,
        data: $form.serialize(), // 序列化所有表单数据(含reCAPTCHA)
        dataType: "json",
        success: function(response) {
          var messageAlert = response.type === "success" ? "alert-success" : "alert-danger";
          var alertBox = `
            <div class="alert ${messageAlert} alert-dismissable">
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
              ${response.message}
            </div>
          `;
          
          // 渲染提示并重置表单
          $form.find(".message").html(alertBox);
          $form[0].reset();
          // 重置reCAPTCHA
          if (typeof grecaptcha !== "undefined") {
            grecaptcha.reset();
          }
        },
        error: function() {
          // 请求失败提示
          var alertBox = `
            <div class="alert alert-danger alert-dismissable">
              <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
              提交失败,请稍后重试
            </div>
          `;
          $form.find(".message").html(alertBox);
        }
      });
    }
  });
});

步骤2:修正PHP代码逻辑

原PHP逻辑基本可用,需调整非AJAX请求的处理,并替换reCAPTCHA密钥:

<?php
function post_captcha($user_response) {
    $fields_string = '';
    $fields = array(
        'secret' => '你的reCAPTCHA密钥', // 替换为真实密钥
        'response' => $user_response
    );
    foreach($fields as $key=>$value)
        $fields_string .= $key . '=' . $value . '&';
    $fields_string = rtrim($fields_string, '&');

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
    curl_setopt($ch, CURLOPT_POST, count($fields));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($ch);
    curl_close($ch);

    return json_decode($result, true);
}

// 验证reCAPTCHA
$res = post_captcha($_POST['g-recaptcha-response']);

if (!$res['success']) {
    $responseArray = array('type' => 'danger', 'message' => '请勾选安全验证框后重试');
} else {
    // 邮件配置
    $from = 'ebsg contact form <ebsg@domain.com>';
    $sendTo = 'ebsg contact form <email@yahoo.co.uk>';
    $subject = 'ebsg contact form message';
    $fields = array('name' => '姓名', 'surname' => '地址', 'phone' => '电话', 'email' => '邮箱', 'message' => '留言');
    $okMessage = '表单提交成功!感谢你的留言,我会尽快回复你!';
    $errorMessage = '提交过程中出现错误,请稍后重试';

    try {
        $emailText = "你收到了来自ebsg网站的新留言\n=============================\n";
        foreach ($_POST as $key => $value) {
            if (isset($fields[$key])) {
                $emailText .= "{$fields[$key]}: {$value}\n";
            }
        }
        mail($sendTo, $subject, $emailText, "From: " . $from);
        $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') {
    header('Content-Type: application/json');
    echo json_encode($responseArray);
} else {
    // 非AJAX请求跳转回表单页面
    header('Location: 你的表单页面URL'); // 替换为表单所在HTML页面地址
    exit;
}
?>

步骤3:HTML表单保持不变

原HTML表单结构无需修改,确保action属性指向ebsg.php即可。


内容的提问来源于stack exchange,提问作者CORKYCHOPS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:05:48