С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468

Как переопределить значение, отправляемое формой на сервер

01.07.2024, 16:56. Показов 800. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую. Есть форма с полями
HTML5
1
2
3
4
5
<label for="date">Дата:</label>
<input type="date" name="date" required>
...
<label for="client">Клиент:</label>
<input type="text" name="client" required readonly>
Во второе поле значение поступает из кода при выборе строки из таблицы. Но на сервере требуется получить id клиента, которое в поле не указывается. Значение id записываю в data атрибут этого же поля. По умолчанию на сервер отправляются данные из полей. Как передать на сервер id вместо текста из поля?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2024, 16:56
Ответы с готовыми решениями:

Как вставить файл в отправляемое письмо
Как мне прикрепить файл к отправляемуму письму! Мне не надо примеры с использование smtp pop клиентов! Мне надо что бы это письмо...

Как Подставить Поле Inetfrom В Отправляемое Письмо
Есть задача, в которой пользователи создают письма в одной из БД на основании документа. Сами письма создаются в другой общей почтовой...

Как вложить картинку в письмо отправляемое на Email
Отправляю письмо из 1с клиентам на Email и хочу в письмо вложить картинку, которая привязана к данному клиенту. Все картинки хранятся в...

11
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3817 / 1655 / 428
Регистрация: 14.03.2022
Сообщений: 4,130
01.07.2024, 17:12
Лучший ответ Сообщение было отмечено INexteR как решение

Решение

INexteR, как именно отправляется эта форма?

Если как-то "рукописно" - нужно в отправляемые данные добавить данные про то ИД.
Если форма отправляется "сама" - можно сделать перехват события submit и добавить скрытое поле со значением этого ИД...

Добавлено через 2 минуты
Примеры "рукописной" отправки формы

JavaScript
1
2
3
4
5
6
7
8
var params = new URLSearchParams(); 
params.set('login', login);
params.set('pass', pass);
 
fetch('/login_ajax.php', {
   method: 'POST',
   body: params
});
Или

JavaScript
1
2
3
4
5
6
7
8
var params = new FormData(); 
params.set('login', login);
params.set('pass', pass);
 
fetch('/login_ajax.php', {
   method: 'POST',
   body: params
});
Подробнее тут https://www.mousedc.ru/learnin... -formdata/
1
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
01.07.2024, 17:48  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
отправляется "сама"
Да, сама.
Я находил оба предложенных вами варианта: со скрытым полем или с помощью xhr. Но оба они кажутся кривыми обходными путями. Неужели нет простого api, которое позволит добавить пару ключ-значение к отправляемым данным?
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
01.07.2024, 18:56
Лучший ответ Сообщение было отмечено INexteR как решение

Решение

Цитата Сообщение от INexteR Посмотреть сообщение
которое позволит добавить пару ключ-значение к отправляемым данным?
PHP/HTML
1
2
3
<label for="client">Клиент:</label>
<input type="hidden" name="client[id]" value="<?= htmlspecialchars($client['id']) ?>">
<input type="text" name="client[name]" value="<?= htmlspecialchars($client['name']) ?>" required readonly>
На самом деле с плоскими данными проще работать..
PHP/HTML
1
2
3
<label for="client">Клиент:</label>
<input type="hidden" name="client_id" value="<?= htmlspecialchars($client['id']) ?>">
<input type="text" name="client_name" value="<?= htmlspecialchars($client['name']) ?>" required readonly>
Только если вы там какой-нибудь массив клиентов отправляете

PHP/HTML
1
2
3
4
5
6
<?php foreach ($clients as $i => $client): ?>
    <label for="client">Клиент:</label>
    <input type="hidden" name="clients[<?= $i ?>][id]" value="<?= htmlspecialchars($client['id']) ?>">
    <input type="text" name="clients[<?= $i ?>][name]" value="<?= htmlspecialchars($client['name']) ?>">
    <input type="text" name="clients[<?= $i ?>][phone]" value="<?= htmlspecialchars($client['phone']) ?>">
<?php endforeach ?>
А зачем вообще отправлять имя? разве id недостаточно? У вас же написано readonly, т.е. поле изменять запрещено, но при желании можно будет отправить что угодно, т.е. этому полю все равно доверять нельзя (в том плане, что связка id - name может не соответствовать).

Добавлено через 21 минуту
INexteR, Может я что-то не так понимаю, если выбор клиента происходит посредствам js, то вы должны и подставлять id при выборе клиента, а не при отправке формы.
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
01.07.2024, 20:09  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
А зачем вообще отправлять имя?
Его не надо отправлять. Его нужно только отображать в input для пользователя. Это поле проходит валидацию, т. е. пользователь обязан выбрать строку в таблице, чтобы в этом поле появились данные. Но id туда не вывожу - для пользователя это бесполезная информация. Но а на сервер нужно отправить id вместо той строки в поле ввода
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,815
02.07.2024, 00:39
Цитата Сообщение от INexteR Посмотреть сообщение
Его нужно только отображать в input для пользователя.
Можно так к нему и относиться, что это вовсе и не input, ведь отображать название можно разными путями.. А для отправки использовать скрытый инпут..
1
 Аватар для voraa
1245 / 1145 / 178
Регистрация: 21.01.2024
Сообщений: 5,264
02.07.2024, 08:27
Цитата Сообщение от INexteR Посмотреть сообщение
Его не надо отправлять. Его нужно только отображать в input для пользователя. Это поле проходит валидацию, т. е. пользователь обязан выбрать строку в таблице, чтобы в этом поле появились данные. Но id туда не вывожу - для пользователя это бесполезная информация. Но а на сервер нужно отправить id вместо той строки в поле ввода
Использовать для отображения имени не input, а другой элемент, который не отправляется в форме. Хоть span, хоть output.
Для id использовать input type=hidden
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3817 / 1655 / 428
Регистрация: 14.03.2022
Сообщений: 4,130
02.07.2024, 10:10
Цитата Сообщение от INexteR Посмотреть сообщение
Неужели нет простого api, которое позволит добавить пару ключ-значение к отправляемым данным?
Так а я тебе что показал?
0
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
02.07.2024, 15:13  [ТС]
В общем вы все говорите об одном, я вас понял. Но в итоге решил перехватить отправку формы по умолчанию и выполнить xhr запрос. Как я могу отобразить результат запроса в текущем окне?

Добавлено через 2 минуты
Цитата Сообщение от krvsa Посмотреть сообщение
fetch('/login_ajax.php', {
   method: 'POST',
   body: params
});
Как результат такого запроса отобразить в той же вкладке?
0
 Аватар для voraa
1245 / 1145 / 178
Регистрация: 21.01.2024
Сообщений: 5,264
02.07.2024, 15:53
Цитата Сообщение от INexteR Посмотреть сообщение
Как результат такого запроса отобразить в той же вкладке?
Можно, но геморно. И к тому же еще и с историей придется возиться.
Поэтому, если вы хотите отправлять данные из формы и получать и отображать страницу, то через форму и надо делать.
Через fetch (и ему подобное) делают отправку и получение данных по ajax. Т.е. получают данные в каком то виде (например json или xml) и уже на основании этих данных на клиенте перестраивают страницу.
1
 Аватар для INexteR
17 / 16 / 1
Регистрация: 25.01.2023
Сообщений: 468
02.07.2024, 16:30  [ТС]
voraa, хорошо, я сделал со скрытым полем, но мне все же любопытно как вывести страницу в текущей вкладке, которую отправил сервер на ajax запрос. Можно увидеть наброски кода?
0
 Аватар для voraa
1245 / 1145 / 178
Регистрация: 21.01.2024
Сообщений: 5,264
02.07.2024, 16:52
Лучший ответ Сообщение было отмечено INexteR как решение

Решение

Цитата Сообщение от INexteR Посмотреть сообщение
Можно увидеть наброски кода?
Ну что то типа такого
JavaScript
1
2
3
4
5
6
7
8
const resp = await fetch('/login_ajax.php', {
   method: 'POST',
   body: params
});
const html = await resp.text();
const blob = new Blob([html], { type: "text/html" });
const url =  URL.createObjectURL(blob);
window.location = url;
Это просто отобразить страницу. Но дело в том, что ее url будет совсем другим, а не /login_ajax.php.
Ну и относительные ссылки на странице работать не будут.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2024, 16:52
Помогаю со студенческими работами здесь

Не подскажете почему сервер не возвращает на запрос страницу с формой ?
&lt;html&gt; &lt;head&gt; &lt;title&gt;Ajax - Node&lt;/title&gt; &lt;style&gt; .error { background-color: red; } &lt;/style&gt; &lt;script...

возвращаемое значение формой выбора
есть код полученнаяФорма = получитьформу(&quot;документ.расходнаянакладная.формавыбора&quot;); результат =...

Числовое значение К(0..99) заменить символьной формой
Числовое значение К(0..99) заменить символьной формой.Например,для К=32 вывести строку &quot;тридцать два&quot; и.т.д

Как передать значение переменной в javascript на сервер?
Подскажите пожалуйста, как передать значение переменной в javascript на сервер? сейчас сделал через скрытой текст бокс, но это ведь не...

Как переопределить событие?
Есть класс MyTabControl наследуюший от TabControl. Сам экземпляр класса создается на форме программным способом. Необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru