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

无法通过JavaScript AJAX获取Summernote文本框值,邮件内容为空求助

问题:Summernote编辑器内容无法获取,邮件发送空内容

你遇到的问题很典型——虽然邮件能成功发送,但获取不到用户输入的邮箱和Summernote编辑器内容,核心原因是你在页面刚加载时就提前获取了表单值,而不是在用户提交表单的瞬间去获取最新输入。

问题分析

你的代码里,messageData和email是在$(document).ready()的最外层定义的,这时候页面刚加载完成,用户还没输入任何内容,所以这两个变量一开始就是空值。之后哪怕用户在输入框和编辑器里填了内容,这两个变量也不会自动更新,因为没有重新读取最新的DOM值。

修改后的代码

把获取邮箱和编辑器内容的代码移到submit事件处理函数内部,这样每次用户点击提交时,才会读取当前最新的输入值:

<form id="mail"> 
  <input type="text" id="email"> 
  <textarea id="summernote"></textarea> 
  <input type="submit"> 
</form>
$('#summernote').summernote({ 
  placeholder: 'your Message', 
  tabsize: 2, 
  height: 300 
});

$(document).ready(function() {
    $('#mail').submit(function(event) {
        event.preventDefault();
        // 关键:在提交时才获取最新的输入值
        var messageData = $('#summernote').summernote('code');
        var email = $('#email').val();
        
        $.ajax({
            url: 'sendmail.php',
            type: 'post',
            data: {
                'send_mail': 1,
                'to': email,
                'message': messageData,
            },
            success: function(response) {
                if (response == 'success') {
                    // 你的成功处理逻辑
                } else if (response == 'error') {
                    // 你的错误处理逻辑
                }
            }
        });
    });
});

另外还有个小优化:原来的代码里嵌套了$(function(){})在$(document).ready()里面,这是多余的,直接在ready函数里绑定submit事件就可以了。

额外检查点

如果修改后还是有问题,可以检查:

  • 确保sendmail.php里正确接收了$_POST['message']和$_POST['to']这两个参数
  • 用console.log(email, messageData)在submit事件里打印这两个值,确认获取到了正确的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:05:32