Просмотр полной версии : панель управления помогите новичку с AJAX-ом
Доброго здравия! Помогите, старшие братья, сломал головушку!
Пишу небольшую панельку для своего сайта, не хватает мозгов сделать это простыми средствами без всяких там ангуляров, на ангуляр вообще мозга не хватает :cray:
Идея проста:
1. добился отправки аяксом данных
2. уже могу обработать и записать в базу
3. нужно получать данные обратно в форму после их обработки (там кое-что выправляется, удаляются ошибки в тексте и пр.)
Подскажите как оформить функцию отправки данных в поля формы обратно.
Подскажите как оформить функцию отправки данных в поля формы обратно
Не надо никаких функций, данные формы же отправляются как ключ (имя поля формы) => значение. Приняв, проверив, что-то исправив, отправляем назад полученный массив в JSON формате, который на клиенте преобразовывается в объект и проходом в цикле помещается в соответствующее поле.
Только вот клиенту как раз возвращают не форму, да и не данные, а ошибки допущенные при вводе их, для каждого поля, в котором они обнаружены.
отправляем назад полученный массив в JSON формате
Спасибо, но вот как это сделать я голову и сломал.
Не надо никаких функций
Как же не надо? Вот у меня есть функция по приему данных по кнопке "отправить":
<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 для меня - темный лес.
клиенту как раз возвращают не форму, да и не данные, а ошибки
Это своего рода панель управления сайтом. Клиент (я) пишу текст, отправляю его, он подправляется, я думаю, дописываю, отправляю и так до бесконечности))
То есть в форме должно инфо обновляться сразу после отправки, а не при перезагрузке или открытию страницы.
1. Обрабатываться в php
2. Записываться в базу в php
3. Читаться из базы в php
4. показываться при помощи яваскрипт
.... начинаю догадываться что яваскрипт этого не может.
Как же не надо? Вот у меня есть функция по приему данных по кнопке "отправить":
А у нее уже готовый метод success, где и нужно получать ответ сервера и обрабатывать его.
Это своего рода панель управления сайтом. Клиент (я) пишу текст, отправляю его, он подправляется, я думаю, дописываю, отправляю и так до бесконечности))
Вряд ли написание текста до бесконечности можно назвать управлением сайта, это скорее его наполнение. Тем более если речь идет о тексте, то что же там сервер должен исправлять, грамматические ошибки?
База данных не только хранит их, но еще и определяет их тип, обязательность или нет. На основе этих типов и проверяются пришедшие данные - должны соответствовать ожидаемому типу, поля формы обязательных данных должны быть заполнены.
HTML5 добавляет новые возможности форме - проверку на заполнение обязательных к заполнению полей и скриптов для этого никаких писать не надо, введенное в поле значение может проверять по рег. выражению и скриптов для этого никаких писать не надо, и др.
То есть на этапе отправки формы уже что-то может проверить клиент, а то что не доступно к проверке на клиенте или же это удобнее сделать на сервере, проверяется на нем, и об ошибках сообщается пользователю. А уж пользователь их исправляет, и так пока смерть не разлучит их.
Откуда знать серверу, что я хочу написать именно "учет", а не "учел", на что он исправил? Я конечно не знаю, чего вы там за клиента решаете и правите, но это вряд ли целесообразно, если вы только не пишите "искусственный интеллект".
Сперва определитесь База -> данные -> представление данных -> добавление и редактирование данных, а уж затем можно определяться с JSON или может с иным.
если вы только не пишите "искусственный интеллект"
Спасибо, так и есть. Вот, к примеру, многие после точки не ставят пробел, или вставляют запрещенные символы, Капитализируют жутко заголовки и прочее. Здесь справится только мой вновь созданный искусственный разум.
Всё это уже работает по старинке с перезагрузкой страницы, но я очень хочу изучить AJAX, и есть прекрасный повод экспериментировать на рабочей модели самописной панели.
По старинке там все очень просто:
1. Страница загружаясь вновь читает POST
2. Скрипт в начале страницы обрабатывает этот пост
3. Затем пишет в бд
4. Далее на странице идет чтение из бд
5. И вывод опять в форму исправленных(обновленных) данных.
Всё просто в один клик.
Но мне хочется использовать чудеса AJAX и вот пункт 5 я не могу реализовать, не хватает знаний. Может кто нибудь уже так делал и поделится? Спасибо за понимание.
Если реализую, обещаю выложить готовую схему, ведь нигде в сети я такого не нашел.
Вот нашел одну идею, это можно было бы использовать:
<!-- это кусок моей формы -->
<input id="t" name="t" value="<?= $t ?>" type="text" >
<!-- это скрипт, который должен менять её value -->
<script>
$('#t').val('новое значение');
</script>
только она не работает
Э батенька, да вы еще и с пояснением запутались.
Сначала "Пишу небольшую панельку для своего сайта", а теперь "многие после точки не ставят пробел, или вставляют запрещенные символы... Скрипт в начале страницы обрабатывает этот пост"
Пост, это здесь на форуме к примеру чего-то наваял и запостил, и да, много пользователей. А панель управления сайтом, это не править орфографию и дописывать пробелы в постах.
Более похоже на обычный прием формы от пользователя. Тогда вопрос - зачем возвращать форму пользователю, если за него все ошибки исправлены, и мало того, даже уже записано в базу?! А вы не задумываетесь о том, что возвращенное и уже записанное, это уже не добавление должно быть, а редактирование? А если так до бесконечности, то надо ли пояснять чем это чревато, если не понимать, что вторичный прием, это уже не запись в базу, а обновление?
Что касается Ajax и в свете JQ, то все просто, прочитать здесь (http://jquery.page2page.ru/index.php5/Ajax), попробовать на примерах, не получится, со своими пробами на форум.
Спасибо, что докопались до слов, а не до сути. Мы все эти мудреные слова англицкие изучали 20 лет назад, поэтому посылали постом и гетом всегда. Куём блоху, пишем свои форумы и порталы на коленке, сотен пять сайтов продали, а вот теперь захотелось своего проекту на ангуляре :cray: а мозг подсох))), надо с чего-то начинать. Вы уж не сердитесь, думал найти тут друзей по несчастью.
Кстати, получилось все сделать. Просто изначально форму нужно положить в див result_id, тогда она сама себя перезаписывает, только уже с обработанными данными.
зазипил результ для аттача (может кому пригодится свою панельку начать, чем эти цэмээски ковырять)
многие после точки
Извините, понял. Сайт-то свой, но народ присылает статьи.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot