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

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

01.07.2024, 16:56. Показов 809. Ответов 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
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
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,823
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,823
02.07.2024, 00:39
Цитата Сообщение от INexteR Посмотреть сообщение
Его нужно только отображать в input для пользователя.
Можно так к нему и относиться, что это вовсе и не input, ведь отображать название можно разными путями.. А для отправки использовать скрытый инпут..
1
 Аватар для voraa
1259 / 1220 / 180
Регистрация: 21.01.2024
Сообщений: 5,626
02.07.2024, 08:27
Цитата Сообщение от INexteR Посмотреть сообщение
Его не надо отправлять. Его нужно только отображать в input для пользователя. Это поле проходит валидацию, т. е. пользователь обязан выбрать строку в таблице, чтобы в этом поле появились данные. Но id туда не вывожу - для пользователя это бесполезная информация. Но а на сервер нужно отправить id вместо той строки в поле ввода
Использовать для отображения имени не input, а другой элемент, который не отправляется в форме. Хоть span, хоть output.
Для id использовать input type=hidden
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3832 / 1671 / 431
Регистрация: 14.03.2022
Сообщений: 4,216
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
1259 / 1220 / 180
Регистрация: 21.01.2024
Сообщений: 5,626
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
1259 / 1220 / 180
Регистрация: 21.01.2024
Сообщений: 5,626
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
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru