2015-05-15 30 views
0

我有一個表格,我試圖通過更新頁面。我的名字和標題 通過;但是,但我的textarea沒有。 我使用來傳遞數據Textarea崗位通過,但不是形式內的數據

<script> 
    $(function() { 

    $('#updater').on('click', function (e) { 

     e.preventDefault(); 

     $.ajax({ 
     type: 'post', 
     url: 'calls.php', 
     data: $('#updatepage').serialize(), 
     success: function (data) { 
      alert(data); 
     location.reload(); 
     } 
     }); 

    }); 

    }); 
</script> 

然後我的實際形式

<form id="updatepage"> 
        <input id="process" name="process" value="updatepage" type="hidden"> 
        <input id="id" name="id" value="<?php echo $_GET['id']; ?>" type="hidden"> 
        <table><tr><td>Name</td><td>Title</td></tr> 
        <tr><td><input type='text' name='name' id='name' value='<?php echo $admin->PageName(); ?>'></td> 
        <td><input type="text" name="title" id="title" value = "<?php echo $admin->PageTitle(); ?>"></td> 
        </tr> 
        </table> 
        <!-- tools box --> 
        <div class="pull-right box-tools"> 
        <button class="btn btn-info btn-sm" data-widget='collapse' data-toggle="tooltip" title="Collapse"><i class="fa fa-minus"></i></button> 
        <button class="btn btn-info btn-sm" data-widget='remove' data-toggle="tooltip" title="Remove"><i class="fa fa-times"></i></button> 
        </div><!-- /. tools --> 
       </div><!-- /.box-header --> 
       <div class='box-body pad'> 
        <textarea id="editor1" name="editor1" rows="10" cols="80"><?php $admin->PageContent(); ?></textarea> 
        <a class="btn btn-app" id="updater"> 
        <i class="fa fa-save"></i> Save 
        </a> 
        </form> 

當我通上輸入IDS被傳送的數據,而不是無論我做什麼它的代碼似乎我的textarea總是認爲它是空的。 這就是所謂的提交功能:

public function UpdatePage() { 
     global $db; 
     $query = <<<SQL 
     UPDATE pages 
     SET name=:name,title=:title,content=:content 
     WHERE id = :id 
SQL; 
     $resource = $db->sitedb->prepare($query); 
     $resource->execute(array(
     ':name' => $_POST['name'], 
     ':title'=> $_POST['title'], 
     ':content' => $_POST['editor1'], 
     ':id' =>$_POST['id'], 
     )); 
    } 

問題在於CK編輯器中。出於某種原因,附加CK編輯器正在使它不能通過。現在我只需要找出原因。 一個已經修改與CKEDITOR工作 $阿賈克斯(函數(){

$('#updater').on('click', function (e) { 
    for (instance in CKEDITOR.instances) 
    CKEDITOR.instances[instance].updateElement(); 

     e.preventDefault(); 

     $.ajax({ 
     type: 'post', 
     url: 'calls.php', 
     data: $('#updatepage').serialize(), 
     success: function (data) { 
      alert(data); 
     location.reload(); 
     } 
     }); 

    }); 

    }); 
</script> 
+0

是否有綁定錯誤,也許?我注意到你的「name」輸入的name屬性是「name」,調用是PageName(),但是,你的textarea name屬性是'editor1',調用是'PageContent()'...你的意思是textarea的名字屬性是「內容」? – wahwahwah

+0

不幸的是,這並不簡單。 :(我添加了表單提交時的調用 –

+0

類似的問題:[jQuery序列化留下了textarea](http://stackoverflow.com/questions/17709014/jquery-serialize-leaves-out-textarea) - – Roberto

回答

1

你的jQuery應該通過罰款來傳遞數據,它包含在連載。

我用這個代碼提醒它是什麼,通過發送和textarea的包含在seralized數據:

$('#updater').on('click', function (e) { 
    alert($('#updatepage').serialize()); 
    e.preventDefault(); 
}); 

JS小提琴:http://jsfiddle.net/zmgLba1h/

既然你提到使用CKEditor,我發現這個SO線程有關在通過ajax提交之前設置值:https://stackoverflow.com/a/3256553/722617

+0

是的,我實際上只是刪除了CK編輯器,並通過了數據告訴我這是CK編輯器現在的一個問題 –

+0

我發現了一個關於提交CKEditor字段的SO線程,你需要在序列化之前設置textarea的值,這應該指向正確的方向 –

+0

這是正確的,我很感激,我甚至可以首先想起CK編輯器。 –