web-dev-qa-db-fra.com

après que le formulaire ajax envoie la valeur de ckeditor textarea n’est pas envoyée par la poste

j'ai un formulaire avec des champs de texte et un textarea (ckeditor), après que la valeur du champ art_title du bouton onclick soit envoyée à la page art_save.php, mais la valeur de textarea n'est pas envoyée. 

<script src="ckeditor/ckeditor.js"></script>
function saveArt() 
{
    var title = document.getElementById('art_title'),
        art_title = title.value;

    var desc = document.getElementById('art_body'),
        art_body = desc.value;

    jQuery.ajax({
        type: 'POST',
        url: 'art_save.php',
        data: {
            title: art_title,
            aut: art_author,
            tag: art_tag,
            desc: art_body

              }

         });  
         return false; 

 }

partie html

<form method="post" name="art" id="art">
    <input type="text" id="art_title" name="art_title" placeholder="Here goes your title"/>
<textarea class="ckeditor" name="art_body" id="art_body"></textarea>
<input type="submit" name="savedraft" id="savedraft" onclick="saveArt();return false;" value="Need more Research ! Save as Draft" class="button"/>
</form>
11
user3099225

Vous pouvez forcer CKeditor à mettre à jour la valeur textarea en utilisant:

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

De plus, vous pouvez utiliser .serialize pour les données - vous ne devrez donc pas conserver le code AJAX si les paramètres changent:

<script src="ckeditor/ckeditor.js"></script>
function saveArt() 
{
    for (instance in CKEDITOR.instances) {
        CKEDITOR.instances[instance].updateElement();
    }

    jQuery.ajax({
        type: 'POST',
        url: 'art_save.php',
        data: $("#art").serialize()
     });  
     return false; 

 }
24
Carl
for (instance in CKEDITOR.instances) 
{
    CKEDITOR.instances[instance].updateElement();
}

$.ajax({
    url: "controllers/c.publicidad.php?task=save",
    type: 'post',
    data: $("form[name='form']").serialize(),
    dataType: 'json',
    success: function(data) {
        if(data.idenvio != ''){
            $("form[name='frmPublicidad']").toggle("slow");
            $("#MessageSuscripcion").html(data.message);
        }
    }
});
3

vous pouvez obtenir le code HTML de ckeditor avec ceci: 

var art_body = CKEDITOR.instances.art_body.getData();
0
Palo

C'est ce qui a fonctionné pour moi:

$.ajax(
{
  type: "POST",
  url: path+"/html-action",
  data: {data1: dataone,
        data2: datatwo,
        data3: datathree,
        data4: datafour,
        message: ckeditortxt},
  cache: true,
  success: function(html)
  {
}
}

Au départ, j’utilisais une structure de données pour transmettre des informations, mais pour une raison quelconque, l’élément qui contient les données ckeditor n’était pas considéré comme un paramètre. J'ai donc divisé tous les paramètres en composants individuels, à savoir data1 data2, data3, data4 ... et cette fois, cela a fonctionné

0
Josh Danns