ckeditor в ajax форме
Вложений: 2
Подключил для textarea формы визуальный редактор ckeditor, и отправляю данные с помощью jQuery Form Plugin. Почему то при первой отправке текстареа всегда пустые (хотя контент в эдитор добавлен), но при второй отправке уже нормально отправляет.
http://ckeditor.com/ https://github.com/malsup/form Вот сам код... <form id="addTest1" enctype="multipart/form-data" action="/admin/quest-create.html?isNaked=1&test=<?=$get_id?>" class="TTWForm spoilerBlock" method="post"> <div id="field1-container" class="field f_100"> <label for="field1"> Текст вопроса </label> <textarea rows="5" cols="20" name="questText" id="field1" required="required"></textarea> </div> <div id="field3-container" class="field f_100"> <label for="field3"> Минимум ответов (если 0 то неограничено) </label> <input name="minReply" value="1" id="field3" required="required" type="text"> </div> <div id="field4-container" class="field f_100"> <label for="field4"> Максимум ответов (если 0 то неограничено) </label> <input name="maxReply" value="1" id="field4" required="required" type="text"> </div> <input name="Test_id" value="<?=$get_id?>" id="field5" type="hidden"> <div id="form-submit" class="field f_100 clearfix submit"> <input value="Добавить" type="submit"> </div> <div id="addTestReply" class="field f_100 infoError"> </div> </form>
(function() {
var status = $('#addTestReply');
$('#addTest1').ajaxForm({
beforeSend: function() {
status.empty();
console.log('step1');
},
uploadProgress: function(event, position, total, percentComplete) {
console.log('step2');
},
success: function() {
console.log('step3');
},
complete: function(xhr) {
data = jQuery.parseJSON(xhr.responseText);
status.html(data.ReplyText);
if(data.status=='ok'){
ContentReload();
}
console.log('step4');
}
});
})();
var field1 = CKEDITOR.replace( 'field1' );
AjexFileManager.init({
returnTo: 'ckeditor',
editor: field1
});
if(isSet($_POST['questText']) or isSet($_POST['minReply']) or isSet($_POST['maxReply'])){
$err_count=0;
$this_date = date("Y-m-d H:i:s");
$f_questText = mysql_escape_string($_POST['questText']);
$f_Test_id = preg_replace('~\D~','',$_POST['Test_id']);
$f_minReply = preg_replace('~\D~','',$_POST['minReply']);
$f_maxReply = preg_replace('~\D~','',$_POST['maxReply']);
if (empty($f_questText)) {
$err_count++;
$arr_req['ReplyText']='Текст вопроса не может быть пустым!';
$arr_req['ErrorElemName']='questText';
}
if (empty($f_minReply)) {
$err_count++;
$arr_req['ReplyText']='Поле "Минимум ответов" не может быть пустым';
$arr_req['ErrorElemName']='minReply';
}
if (empty($f_maxReply)) {
$err_count++;
$arr_req['ReplyText']='Поле "Максимум ответов" не может быть пустым';
$arr_req['ErrorElemName']='maxReply';
}
if ($f_maxReply<$f_minReply) {
$err_count++;
$arr_req['ReplyText']='Минимальное число ответов не может быть больше максимального!';
$arr_req['ErrorElemName']='minReply';
}
if (empty($f_Test_id)) {
$err_count++;
$arr_req['ReplyText']='Заполните имя!';
$arr_req['ErrorElemName']='';
}
if ($get_test!=$f_Test_id){
$err_count++;
$arr_req['ReplyText']='Ошибка! Перезагрузите страницу!';
$arr_req['ErrorElemName']='';
}
if($err_count==0){
$sql_string = "SELECT `Priority` FROM `{$DB_FX}Quest` WHERE `Test_id`='{$f_Test_id}' ORDER BY `Priority` DESC LIMIT 1;";
$sql_query = mysql_query($sql_string);
$arr_row = mysql_fetch_row($sql_query);
$Priority = $arr_row[0];
if($Priority=='' or $Priority=='0' or $Priority<=0){
$Priority=1;
}else{
$Priority++;
}
$sql_string="INSERT INTO `{$DB_FX}Quest` SET `Quest_text`='{$f_questText}', `Checked`='0', `Priority`='{$Priority}', `Test_id`='{$f_Test_id}', `Reply_min`='{$f_minReply}', `Reply_max`='{$f_maxReply}', `Reply_count`='0';";
if(mysql_query($sql_string)){
$arr_req['status']='ok';
$arr_req['ReplyText']='Вопрос успешно добавлен!';
$sql_string = "SELECT COUNT(*) FROM `{$DB_FX}Quest` WHERE `Test_id`='{$f_Test_id}';";
$sql_query = mysql_query($sql_string);
$arr_row = mysql_fetch_row($sql_query);
$count_quest = $arr_row[0];
$sql_string="UPDATE `{$DB_FX}Test` SET `Quert_count`='{$count_quest}' WHERE `Test_id`='{$f_Test_id}';";
mysql_query($sql_string);
}else{
$arr_req['status']='fail';
$arr_req['ReplyText']='Ошибка записи данных!';
}
}else{
$arr_req['status']='fail';
$arr_req['get_test']=$get_test;
}
}
echo json_encode($arr_req);
|
Сколько лишнего в коде и при этом даже намека нет о безопасности.
|
Ок плохой код. (форма закрыта от общего доступа, тут просто защита от дураков).
А что на счет того что с первого раза не отсылается? |
В коде вообще нет никакой защиты, а вот написано...
Не знаю почему не отправляется, возможно не правильно используется плагин, а я не знаком с ним. |
от чего нет защиты от SQL инъекции что ли?
|
О всемогучий рони приди,
И отдебаж мой кривой код. |
http://docs.cksource.com/ckeditor_ap...OR.editor.html
Короче я тут нашел .getData() - получить контент из объекта CKEditor у меня объеткт с объектами для каждого текстареа в модальном окне создаются при открытии модального окна и я из него беру объект CKEditorObj.editContentQuest.getData(); Короче так работает. Всё ништяк. |
| Часовой пояс GMT +3, время: 02:17. |