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

时间:2012-07-31 21:11:07

标签: php jquery html ajax post

由于我不知道的原因,我的表单未提交输入<textarea>的文字。

ajax代码:

$.ajax({
type:'POST', 
url:'****.php', 
data:$('#blogForm').serialize(),
success: function(responseSubmit) { blah blah etc...

输入工作正常,并正确地发布到我的数据库。

表格是:

<form id="blogForm">
                        <input type="date" name="date" id="blogDate">
                        <input type="text" name="title" id="blogTitle">
                        <textarea name="blogContent" id="blogBody"></textarea>
                        <input type="submit" name="submit" id="blogSubmit">
                    </form>

当我在firebug中检查时,我得到的是:POST是: date=09%2F25%2F1986&title=Title&blogContent=

如您所见,blogContent为空。这是为什么?

6 个答案:

答案 0 :(得分:5)

我忽略了提到我在文本区域附加了一个WYSIWYG编辑器,名为nicEditor。显然有一个错误迫使jQuery不能序列化textarea。一旦nicEditor被删除,它工作正常。感谢您的帮助。

答案 1 :(得分:1)

变化:

   data:$('#blogForm').serialize(),

要:

   data:$('#blogForm').find('input, select, textarea, button').serialize(), 

答案 2 :(得分:0)

添加return false onsubmit

<code>
<form id="blogForm" onsubmit="return(false);">  
    <input type="date" name="date" id="blogDate">
    <input type="text" name="title" id="blogTitle">
    <textarea name="blogContent" id="blogBody"></textarea>
    <input type="submit" name="submit" id="blogSubmit">    
  </form>​
</code>

点击按钮

调用ajax
$("#blogSubmit").on('click',function(){      

$.ajax({
type:'POST', 
url:'****.php', 
data:$('#blogForm').serialize(),
success: function(responseSubmit) { blah blah etc...

});

答案 3 :(得分:0)

您的textarea名称是blogContent,但ID是blogBody。 #选择器使用id,而不是名称。

答案 4 :(得分:0)

你不需要删除你的编辑器 - 他们通常使用JS在每次击键后更新隐藏的textarea,或者在表单提交时使用,这样如果编辑器得到正确的话就不会有所作为。

我认为这个问题正如Phillip建议的那样 - 您的ID和名称属性不同。所有其他人都很好。当它序列化时,它必须使用ID,并且可能在你的脚本中,你希望这些名称会出现(正常的表单提交会这样做)。

由于您是通过$ POST发送的,只需执行var_dump($ _ POST);在您的脚本中,然后将其记录到控制台或在JavaScript中提醒它 - 看看通过AJAX发送到您脚本的确切内容。

如果textarea不在任何名称下,那么你知道问题肯定是编辑器,如果是,请尝试手动调用nicEditor的方法来更新隐藏的textarea。

答案 5 :(得分:0)

如果您使用的是ajaxSubmit,那么来自任何文本编辑器的textarea的POST数据将无效。

所以你必须得到价值&amp;把它放到隐藏字段然后你可以得到这样的POST值:

<textarea id="safety" name="safety" style="width:600px;height:70px"></textarea>
<input type="hidden" name="safety_precautions" id="safety_precautions">
在ajaxsubmit之前

$('#safety_precautions').val(tinyMCE.get('safety').getContent());