У меня в приложении установлен CKeditor:
if ($('#disputeTextarea').length) {
CKEDITOR.replace( 'disputeTextarea' );
$('#dispute-post-msg').click(function() {
$.poseidon('#dispute-msg-form', {
method: 'post',
data: {
'message': $('#realTextarea').val(),
'app_csrf_token': $('input[name="app_csrf_token"]').val(),
'uri': $('input[name="uri"]').val(),
},
onBeforeSend() {
for ( instance in CKEDITOR.instances ) {
CKEDITOR.instances[instance].on('change', function ()
{
var editorName = $(this)[0].name;
CKEDITOR.instances[editorName].updateElement();
});
document.getElementById('realTextarea').value = CKEDITOR.instances[instance].getData();
}
return true;
},
onSuccess(data) {
//handle success event
}
});
});
}
Скрипт PHP, обрабатывающий отправку опубликованных данных:
public function send_message($dispute_id, $uid) {
if ($this->input->is_ajax_request()) {
$message = $this->db->escape_str($this->input->post('message'));
$uri = $this->db->escape_str($this->input->post('uri'));
if (empty($message)) {
exit(json_encode([
'response' => false,
'message' => 'Message field is empty.'
]));
} else {
// Insert message into db
$this->db = $this->load->database('disputes', TRUE);
$this->db->set([
'id' => $this->_generate_id('messages'),
'dispute_id' => $dispute_id,
'author' => $uid,
'message' => htmlentities($message),
]);
$update = $this->db->insert('messages');
if ($update) {
exit(json_encode([
'response' => true,
'message' => 'Your message was successfully posted.',
'url' => '/'. $uri
]));
} else {
exit(json_encode([
'response' => false,
'message' => 'An error occurred while trying to send your message, please try again later or contact support if the problem persists.'
]));
}
}
} else {
show_404();
}
}
Представление, содержащее форму с CKeditor:
<div class="row">
<div class="col-lg-12 col-md-12">
<?= form_open('disputes/{dispute_id}/message/send/{cur_uid}', 'class="form-group" id="dispute-msg-form"'); ?>
<input type="hidden" disabled="" name="uri" value="{uri}" />
<textarea id="disputeTextarea"></textarea>
<input id="realTextarea" type="hidden" name="message" />
<button style="margin: 20px 0;" id="dispute-post-msg" class="btn btn-info mr-1"><i class="ft-key-square ticket-options-icon align-middle"></i>
Post Message
</button>
<?= form_close() ?>
</div>
</div>
Результат, который я получаю после отправки формы в первый раз: Форма редактора СК Данные POST формы не включают поле message
в первом запросе, но добавляются в другие последующие запросы. Отладка довольно сложна, и хоть убей, я не могу заставить ее работать. Я использую CodeIgniter 3.1.1 и PHP 7.4.8