LINUX.ORG.RU

Передать в запрос POST все поля ввода

 


0

1
<div class="form-group" id="p1">
   <input type="text" class="form-control" id="p1_lastname">
   <input type="text" class="form-control" id="p1_firstname">
</div>
<div class="form-group" id="p2">
   <input type="text" class="form-control" id="p2_lastname">
   <input type="text" class="form-control" id="p2_firstname">
</div>



$.ajax({
  url: "/control/",
  type: "POST",
  data: {
    p1_lastname:       $("#p1_lastname").val(),
    p1_firstname:      $("#p1_firstname").val(),
    p2_lastname:       $("#p2_lastname").val(),
    p2_firstname:      $("#p2_firstname").val(),
  }
}).done( function(json) {
}).fail(function() {
});


Как можно отправить все input и select из «#p1»,«#p2» без перечисления полей?

★★

Можно обернуть инпуты в формы и примерно так собрать их них значения:

const data = [...document.forms].reduce((data, form) => {
  new FormData(form).forEach((v, k) => data.append(k, v))

  return data
}, new FormData())
Можешь в одну форму обернуть, если это вёрстке не помешает, тогда ещё проще.
const form = document.getElementById("form-id")
const data = new FormData(form)
Не забудь что это будет multipart/form-data. И для форм скорее всего нужно будет переопределить onsubmit.

ddidwyll ★★★★
()
Последнее исправление: ddidwyll (всего исправлений: 1)
Ответ на: комментарий от WinLin2

jquery

Ненужно.

придумали

В нормальных фронтовых инструментах давно уже придумали так:

<script>
  const data = {}
	
  const submit = () => {
    alert(JSON.stringify(data))
  }
</script>

<div>
  <input bind:value={data.first} />
</div>

<div>
  <input bind:value={data.last} />
</div>

<button on:click={submit}>
  Submit
</button>

https://svelte.dev/repl/8c1635c6bd7b4c6faf16a6c0bee121f6?version=3.44.1

ddidwyll ★★★★
()
Последнее исправление: ddidwyll (всего исправлений: 3)
Ответ на: комментарий от WinLin2

Закат солнца вручную какой-то. Есть же обычные html формы. action=“/control/“, name=“p1_lastname” и т.п. Нет, надо оверинжиниринг воткнуть

cobold ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.