jquery ajax上的Textarea没有发送到mysql,只是输入字段

Posted

技术标签:

【中文标题】jquery ajax上的Textarea没有发送到mysql,只是输入字段【英文标题】:Textarea on jquery ajax isn't sending to mysql, just input field 【发布时间】:2013-12-27 10:50:12 【问题描述】:

我在尝试将 textarea 的值发送到 mysql 时遇到问题。 输入postusername的值发送成功,但不是textarea的值。

当它工作时(我不知道为什么它停止了),第一次发送了值​​,但是如果我尝试在不刷新页面的情况下发送另一个值,则再次发送之前的值而不是新值插入到 textarea。

现在,textarea 在警报窗口中返回一个空值,并且只在 mysql 中记录输入 postusername

<form id="newpostform" method="post" style="width:90%;margin-left:auto;margin-right:auto;margin-top:-35px;margin-bottom:10px;font-family:Calibri,Arial;">
    <textarea class="editbook" name="newpostcontent"></textarea>
    <div style="margin-top:10px;margin-right:25px;">
        <input type="text" value="<?php echo $username0; ?>" name="postusername">
        <input class="Button" style="float:right;margin-bottom:10px;margin-left:10px;" type="button" value="Preview">
        <input class="Button" style="float:right;margin-bottom:10px;margin-left:10px;" type="button" value="Save draft">
        <input id="sendButton" class="Button" style="float:right;margin-bottom:10px;" type="button" value="Send">
    </div>
</form>
<script>
    $(function () 
        $("input#sendButton").on("click", function () 
            $.post('newpost.php', $("form#newpostform").serialize(), function (data) 
                alert($("textarea[name=newpostcontent]").val());
            );
        );
    );
</script>

newpost.php

require("../db_info.php");
mysql_query("
    INSERT INTO
        post (
            author, 
            content
        ) 
        VALUES (
            '".$_POST['postusername']."', 
            '".$_POST['newpostcontent']."'
    )"
);

如果我这样做,例如:

mysql_query("
    INSERT INTO
        post (
            author, 
            content
        ) 
        VALUES (
            '".$_POST['postusername']."', 
            'Why doesn't this work?'
    )"
);

$_POST['postusername'] 和短语“为什么这不起作用?” sql里写的正确。

感谢您的关注。

【问题讨论】:

即使您的 newpost.php 中存在解析错误,警报也应该有效。上面的代码对我来说似乎工作正常。尝试通过 firebug 查看 ajax 请求。 我忘了说,我正在使用 TinyMCE。没有它,脚本运行良好。但是我的网站需要一个带有 html 编辑器的文本编辑器。有人给我推荐了一个? $.post 和变量之前使用this answer 和tinyMCE.triggerSave(); 解决了问题。感谢您的帮助。 【参考方案1】:

这样试试

var content=$("textarea[name=newpostcontent]").val(),
username=$("input[name=postusername]").val();
$.post('newpost.php', newpostcontent:content,postusername:username, function (data) 
     alert(content);
);

希望这可行

【讨论】:

这仅在我在 textarea 上输入值后刷新页面时才有效。但是站点需要在不刷新页面的情况下发送值(最多一次和不同的值)。似乎ajax正在获取textarea的初始值,即为空。我的页面没有根据用户的写作来更新 textarea 的值。 我在您创建的变量之前用tinyMCE.triggerSave(); 解决了这个问题。现在 TinyMCE 和 Ajax 工作得很好!非常感谢。

以上是关于jquery ajax上的Textarea没有发送到mysql,只是输入字段的主要内容,如果未能解决你的问题,请参考以下文章

来自ckeditor textarea的ajax表单提交值之后没有通过邮件发送

表单中的 Textarea 未使用 jQuery AJAX 通过 POST 提交

通过 Ajax 将 Textarea 字段传递给 php

如何通过包含 & 和/或换行符的 ajax 传递 textarea 数据?

jQuery $.ajax 没有触发任何事情发生

JQuery中select change事件该怎么触发?我想通过Ajax把所选择选项的值发送到后台处理一些逻辑。。。