如何Ajax的提交从CKEditor表单textareainput?

我正在使用CKEditor,jQuery和jQuery表单插件 ,我想通过Ajax查询提交CkEditor表单的内容。 这是我的代码:

<form id="article-form" name="article-form" method="post" action="/myproject/save"> <textarea name="bodyText" style="visibility: hidden; display: none;"></textarea> <script type="text/javascript"> CKEDITOR.replace('bodyText'); </script> <a onClick="$("#article-form").ajaxSubmit();">Submit</a> </form> 

不幸的是,似乎Ajax请求没有传递bodyText参数;

我做错了什么,或者我怎么能够达到我所需要的?

谢谢。

你需要先调用以下,使CKEDITORs更新其相关领域..

 for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement(); 

所以

HTML

 <a onClick="CKupdate();$('#article-form').ajaxSubmit();">Submit</a> 

和JavaScript

 function CKupdate(){ for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement(); } 

这对我来说最好: beforeSerializecallback

 $('form#description').ajaxForm({ beforeSerialize:function($Form, options){ /* Before serialize */ for ( instance in CKEDITOR.instances ) { CKEDITOR.instances[instance].updateElement(); } return true; }, // other options }); 

如果您使用jQuery表单插件 ,则可以使用beforeSubmit选项作为更优雅的解决scheme:

 $("#form").ajaxForm({ beforeSubmit: function() { /* Before submit */ for ( instance in CKEDITOR.instances ) { CKEDITOR.instances[instance].updateElement(); } }, // ... other options }); 

在我的情况下,以下帮助我,我只是使用这两行之前,seializing表单。

  for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement(); var data = $('#myForm').serializeArray(); 

我尝试了这样的事情:

首先,我必须在@ Html.BeginForm上放置一个id =“#myForm”,然后将这些放在脚本部分,在这里我使用脚本:

 <script type="text/javascript"> $(document).ready(function CKupdate() { $('#myForm').ajaxForm(function () { for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); } }); }); </script> 

然后我做了这样的事情=]为我的提交button,它对我工作正常,不再按提交两次=]

 <button type="submit" id="submitButton" onclick="CKupdate();$('#myForm').ajaxSubmit();">Submit</button> 

我只是这样做了:

 $('#MyTextArea').closest('form').submit(CKupdate); function CKupdate() { for (instance in CKEDITOR.instances) CKEDITOR.instances[instance].updateElement(); return true; }