
18.04.2016, 14:28
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
панель управления помогите новичку с AJAX-ом
Доброго здравия! Помогите, старшие братья, сломал головушку!
Пишу небольшую панельку для своего сайта, не хватает мозгов сделать это простыми средствами без всяких там ангуляров, на ангуляр вообще мозга не хватает
Идея проста:
1. добился отправки аяксом данных
2. уже могу обработать и записать в базу
3. нужно получать данные обратно в форму после их обработки (там кое-что выправляется, удаляются ошибки в тексте и пр.)
Подскажите как оформить функцию отправки данных в поля формы обратно.
Последний раз редактировалось Pupkins, 18.04.2016 в 14:50.
|
|

18.04.2016, 15:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Pupkins
|
Подскажите как оформить функцию отправки данных в поля формы обратно
|
Не надо никаких функций, данные формы же отправляются как ключ (имя поля формы) => значение. Приняв, проверив, что-то исправив, отправляем назад полученный массив в JSON формате, который на клиенте преобразовывается в объект и проходом в цикле помещается в соответствующее поле.
Только вот клиенту как раз возвращают не форму, да и не данные, а ошибки допущенные при вводе их, для каждого поля, в котором они обнаружены.
|
|

18.04.2016, 17:11
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
Сообщение от laimas
|
отправляем назад полученный массив в JSON формате
|
Спасибо, но вот как это сделать я голову и сломал.
|
|

18.04.2016, 17:21
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
Сообщение от laimas
|
Не надо никаких функций
|
Как же не надо? Вот у меня есть функция по приему данных по кнопке "отправить":
<script>
function AjaxFormRequest(result_id,form_id,url) {
jQuery.ajax({
url: url,
type: "POST",
dataType: "html",
data: jQuery("#"+form_id).serialize(),
success: function(response) {
document.getElementById(result_id).innerHTML = response;
},
error: function(response) {
document.getElementById(result_id).innerHTML = "Ошибка при отправке формы";
}
});
// return false;
}
</script>
Данные обрабатываю и пишу в базу (если что-то не по-моему, выдаю требования в диве "result_id").
Теперь нужно эти обработанные данные послать как-то обратно на ту страницу, с которой были посланы и присвоить(заменить) их в соответствующих полях. Принимаю POST-ом потому что JSON для меня - темный лес.
|
|

18.04.2016, 17:35
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
Сообщение от laimas
|
клиенту как раз возвращают не форму, да и не данные, а ошибки
|
Это своего рода панель управления сайтом. Клиент (я) пишу текст, отправляю его, он подправляется, я думаю, дописываю, отправляю и так до бесконечности))
То есть в форме должно инфо обновляться сразу после отправки, а не при перезагрузке или открытию страницы.
1. Обрабатываться в php
2. Записываться в базу в php
3. Читаться из базы в php
4. показываться при помощи яваскрипт
.... начинаю догадываться что яваскрипт этого не может.
Последний раз редактировалось Pupkins, 18.04.2016 в 17:54.
|
|

18.04.2016, 18:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Pupkins
|
Как же не надо? Вот у меня есть функция по приему данных по кнопке "отправить":
|
А у нее уже готовый метод success, где и нужно получать ответ сервера и обрабатывать его.
Сообщение от Pupkins
|
Это своего рода панель управления сайтом. Клиент (я) пишу текст, отправляю его, он подправляется, я думаю, дописываю, отправляю и так до бесконечности))
|
Вряд ли написание текста до бесконечности можно назвать управлением сайта, это скорее его наполнение. Тем более если речь идет о тексте, то что же там сервер должен исправлять, грамматические ошибки?
База данных не только хранит их, но еще и определяет их тип, обязательность или нет. На основе этих типов и проверяются пришедшие данные - должны соответствовать ожидаемому типу, поля формы обязательных данных должны быть заполнены.
HTML5 добавляет новые возможности форме - проверку на заполнение обязательных к заполнению полей и скриптов для этого никаких писать не надо, введенное в поле значение может проверять по рег. выражению и скриптов для этого никаких писать не надо, и др.
То есть на этапе отправки формы уже что-то может проверить клиент, а то что не доступно к проверке на клиенте или же это удобнее сделать на сервере, проверяется на нем, и об ошибках сообщается пользователю. А уж пользователь их исправляет, и так пока смерть не разлучит их.
Откуда знать серверу, что я хочу написать именно "учет", а не "учел", на что он исправил? Я конечно не знаю, чего вы там за клиента решаете и правите, но это вряд ли целесообразно, если вы только не пишите "искусственный интеллект".
Сперва определитесь База -> данные -> представление данных -> добавление и редактирование данных, а уж затем можно определяться с JSON или может с иным.
|
|

18.04.2016, 19:44
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
Сообщение от laimas
|
если вы только не пишите "искусственный интеллект"
|
Спасибо, так и есть. Вот, к примеру, многие после точки не ставят пробел, или вставляют запрещенные символы, Капитализируют жутко заголовки и прочее. Здесь справится только мой вновь созданный искусственный разум.
Всё это уже работает по старинке с перезагрузкой страницы, но я очень хочу изучить AJAX, и есть прекрасный повод экспериментировать на рабочей модели самописной панели.
По старинке там все очень просто:
1. Страница загружаясь вновь читает POST
2. Скрипт в начале страницы обрабатывает этот пост
3. Затем пишет в бд
4. Далее на странице идет чтение из бд
5. И вывод опять в форму исправленных(обновленных) данных.
Всё просто в один клик.
Но мне хочется использовать чудеса AJAX и вот пункт 5 я не могу реализовать, не хватает знаний. Может кто нибудь уже так делал и поделится? Спасибо за понимание.
Если реализую, обещаю выложить готовую схему, ведь нигде в сети я такого не нашел.
Последний раз редактировалось Pupkins, 18.04.2016 в 22:53.
|
|

18.04.2016, 22:57
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
Вот нашел одну идею, это можно было бы использовать:
<!-- это кусок моей формы -->
<input id="t" name="t" value="<?= $t ?>" type="text" >
<!-- это скрипт, который должен менять её value -->
<script>
$('#t').val('новое значение');
</script>
только она не работает
|
|

19.04.2016, 06:28
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Э батенька, да вы еще и с пояснением запутались.
Сначала "Пишу небольшую панельку для своего сайта", а теперь "многие после точки не ставят пробел, или вставляют запрещенные символы... Скрипт в начале страницы обрабатывает этот пост"
Пост, это здесь на форуме к примеру чего-то наваял и запостил, и да, много пользователей. А панель управления сайтом, это не править орфографию и дописывать пробелы в постах.
Более похоже на обычный прием формы от пользователя. Тогда вопрос - зачем возвращать форму пользователю, если за него все ошибки исправлены, и мало того, даже уже записано в базу?! А вы не задумываетесь о том, что возвращенное и уже записанное, это уже не добавление должно быть, а редактирование? А если так до бесконечности, то надо ли пояснять чем это чревато, если не понимать, что вторичный прием, это уже не запись в базу, а обновление?
Что касается Ajax и в свете JQ, то все просто, прочитать здесь, попробовать на примерах, не получится, со своими пробами на форум.
|
|

19.04.2016, 09:24
|
Новичок на форуме
|
|
Регистрация: 17.04.2016
Сообщений: 8
|
|
Спасибо, что докопались до слов, а не до сути. Мы все эти мудреные слова англицкие изучали 20 лет назад, поэтому посылали постом и гетом всегда. Куём блоху, пишем свои форумы и порталы на коленке, сотен пять сайтов продали, а вот теперь захотелось своего проекту на ангуляре  а мозг подсох))), надо с чего-то начинать. Вы уж не сердитесь, думал найти тут друзей по несчастью.
Кстати, получилось все сделать. Просто изначально форму нужно положить в див result_id, тогда она сама себя перезаписывает, только уже с обработанными данными.
зазипил результ для аттача (может кому пригодится свою панельку начать, чем эти цэмээски ковырять)
Последний раз редактировалось Pupkins, 19.04.2016 в 09:41.
|
|
|
|