Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Отправка данных и фалов ajax


Автор: DrFlor 20.4.2020, 23:14
Здравствуйте.
У меня есть форма с группами

Код

<form action="" id="ttt" method="POST">
  
  <input type="text" name="lol[]" value="1.1"><br>
  <input type="text" name="wow[]" value="1.2"><br>
  <input type="text" name="low[]" value="1.3"><br>
  <input type="text" name="wol[]" value="1.4"><br>
  <input type="checkbox" name="checkbox[]"><br>
  <hr>
  
  <input type="text" name="lol[]" value="2.1"><br>
  <input type="text" name="wow[]" value="2.2"><br>
  <input type="text" name="low[]" value="2.3"><br>
  <input type="text" name="wol[]" value="2.4"><br>
  <input type="checkbox" name="checkbox[]"><br>
  <hr>
  
  <input type="text" name="lol[]" value="3.1"><br>
  <input type="text" name="wow[]" value="3.2"><br>
  <input type="text" name="low[]" value="3.3"><br>
  <input type="text" name="wol[]" value="3.4"><br>
  <input type="checkbox" name="checkbox[]"><br>
  <hr>
  <input type="text" name="lol[]" value="4.1"><br>
  <input type="text" name="wow[]" value="4.2"><br>
  <input type="text" name="low[]" value="4.3"><br>
  <input type="text" name="wol[]" value="4.4"><br>
  <input type="checkbox" name="checkbox[]"><br>
  <hr>
  
  <input type="submit" name="wowlolwow">  
</form>


При активном checkbox мне нужно отправить ту или иную группу с помощью ajax и обработать данные с помощью php.
Данную задачу решил таким способом при активном checkbox навешиваю class active и отправляю через serialize данные

Код

$('#ttt input[type=checkbox]').click(function () {
      $(this).parent().toggleClass('active');
});

var inp = $('.active :input').serialize();
 
$.ajax({
     type: 'POST',
     url: 'My_URL.php',
     data: inp,
     success: function(html){
     $('#status').html(html);
     }
  });
     return false;
});

Все данные отправляются я их обрабатываю и получаю нужный мне результат. Но вопрос встал в том что бы в этой же форме отправить еще изображение.
Пробовал сделать так 
Код

var inp = $('.active :input').serialize();
  
     var fd = new FormData();    
     fd.append( 'inp', inp);
 
$.ajax({
     url: 'My_URL.php',
     processData: false,
     contentType: false,
     type: 'POST',
     data: fd,
     success: function(html){
     $('#status').html(html);
     }
  });
     return false;
});

Так за место массива кторый я получал раньше в php
Код

Array (

Array ( 
[data_1] => Array ( [0] => test 1 )
[data_2] => Array ( [0] => test 2 )
[checkbox] => Array ( [0] => on )
)


Получаю вот такой ответ

Код

Array (

[inp] =>
datas_1%5B%5D=test%5B%5D1
&data_2%5B%5D=test%5B%5D2
&checkbox%5B%5D=on
)


Как мне передать данные выбранной группы активного checkbox и изображение одним запросом?

Автор: DrFlor 21.4.2020, 13:02
Забыл дописать что бы передать группу, а не всю форму. Я каждую группу обвязал блоками div и привел к такому виду

Код

<div>
    <input type="text" name="lol[]" value="1.1"><br>
    <input type="text" name="wow[]" value="1.2"><br>
    <input type="text" name="low[]" value="1.3"><br>
    <input type="text" name="wol[]" value="1.4"><br>
    <input type="checkbox" name="checkbox[]"><br>
    <hr>
</div>


Написал пример одной группы. 

Автор: DrFlor 21.4.2020, 15:10
Вопрос решен.

ТЕМА ЗАКРЫТА

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)