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, время: 13:52. |