web-dev-qa-db-ja.com

ajaxフォームがckeditortextareaから値を送信した後、投稿を介して送信されません

onclickボタンのart_titleフィールド値がart_save.phpページに送信された後、いくつかのテキストフィールドとtextarea(ckeditor)を持つフォームがありますが、textareaからの値は送信されません。

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

 }

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

以下を使用して、CKeditorにtextarea値を更新させることができます。

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

また、データに.serializeを使用できます。パラメータが変更された場合、AJAXコードを維持する必要はありません:

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

 }
31
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);
        }
    }
});

変更時にフィールド値を更新するように修正しました。ここに私のコード:

HTML:

<div class="row">
    <div class="form-group col-sm-11">
        <label for="ckfield">ckfield</label>
        <textarea id="ckfield" class="form-control" rows="10" name="ckfield" cols="50"></textarea>
    </div>
</div>

JS:

<script>
$(function(){
    var $ckfield = CKEDITOR.replace( 'ckfield' );

    $ckfield.on('change', function() {
      $ckfield.updateElement();         
    });
});
</script>
1
Luis Morales

あなたはこれでhtmlフォームckeditorを得ることができます:

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

これは私のために働いたものです:

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

当初、私はデータ文字列を使用して情報を渡していましたが、何らかの理由で、ckeditorデータを保持する要素がパラメーターとして考慮されていませんでした。したがって、すべてのパラメータを個々のコンポーネント、つまりdata1 data2、data3、data4 ....に分割しましたが、今回は機能しました

0
Josh Danns