Jak ajax-przesłać formularz textarea wejście z CKEditor?

Używam CKEditor, jQuery i jQuery form plugin i chciałbym przesłać zawartość formularza CKEditor za pomocą zapytania Ajax. Oto Mój kod:

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

Niestety, wydaje się, że żądanie Ajax nie przekazuje parametru bodyText;

Co zrobiłem źle lub Jak mogę osiągnąć to, czego potrzebuję?

Dziękuję.
Author: fabien7474, 2010-07-15

6 answers

Musisz najpierw wywołać poniższe wywołanie, aby CKEDITORs zaktualizował swoje powiązane pola..

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

Więc

HTML

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

I javascript

function CKupdate(){
    for ( instance in CKEDITOR.instances )
        CKEDITOR.instances[instance].updateElement();
}
 132
Author: Gabriele Petrioli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-22 12:45:07

To działa dla mnie najlepiej: przed wywołaniem zwrotnym

$('form#description').ajaxForm({
    beforeSerialize:function($Form, options){
        /* Before serialize */
        for ( instance in CKEDITOR.instances ) {
            CKEDITOR.instances[instance].updateElement();
        }
        return true; 
    },
    // other options
});
 16
Author: Pepa Chmel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-13 09:46:53

Jeśli używasz jQuery form plugin , możesz użyć opcji beforeSubmit dla bardziej eleganckiego rozwiązania:

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

  // ... other options
});
 8
Author: Crewone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-13 09:47:00

W moim przypadku pomogło mi to, po prostu używam tych dwóch linijek przed seializacją formularza.

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

  var data = $('#myForm').serializeArray();
 6
Author: Milan Saha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-09 00:52:17

Próbowałem czegoś takiego:

Najpierw musiałem umieścić id = "# myForm " na @ Html.BeginForm później umieszczam je w mojej części skryptów, gdzie w używam skryptu:

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

A potem zrobilem cos takiego=] dla mojego przycisku submit i u mnie dziala dobrze, juz nie naciskajac dwa razy Submit=]

<button type="submit" id="submitButton" onclick="CKupdate();$('#myForm').ajaxSubmit();">Submit</button>
 3
Author: EugeneEunice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-03 10:55:36

Zrobiłem to tak:

$('#MyTextArea').closest('form').submit(CKupdate);

        function CKupdate() {
            for (instance in CKEDITOR.instances)
                CKEDITOR.instances[instance].updateElement();
            return true;
        }
 1
Author: Omu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 07:28:16