8

由于我不知道的原因,我的表单没有提交输入到我的<textarea>.

阿贾克斯代码:

$.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>

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

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

4

6 回答 6

5

我没有提到我在文本区域附加了一个所见即所得的编辑器,称为 nicEditor。显然有一个错误迫使 jQuery 不序列化 textarea。一旦 nicEditor 被删除,它工作正常。感谢所有的帮助。

于 2012-07-31T21:28:29.510 回答
1

改变:

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

至:

   data:$('#blogForm').find('input, select, textarea, button').serialize(), 
于 2013-03-04T11:41:11.927 回答
0

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

因此,您必须获取值并将其放入隐藏字段,然后您才能获得 POST 值,如下所示:

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

在ajax提交之前

$('#safety_precautions').val(tinyMCE.get('safety').getContent());
于 2013-04-22T12:36:46.620 回答
0

Add 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>

Call ajax on button click

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

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

});
于 2012-07-31T21:32:04.023 回答
0

您不需要删除您的编辑器 - 它们通常通过在每次击键后或表单提交时使用 JS 更新隐藏的文本区域来工作,因此只要编辑器正确无误,这不会有什么不同。

我想这个问题正如菲利普所建议的那样 - 你的 ID 和姓名属性不同。所有其他都匹配得很好。当它序列化时,它必须使用 ID,并且大概在另一端的脚本中,您希望名称会出现(正常的表单提交会这样做)。

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

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

于 2012-09-27T11:49:09.107 回答
0

您的文本区域名称是 blogContent,但 id 是 blogBody。# 选择器使用 id,而不是名称。

于 2012-08-02T18:35:51.440 回答