Помогите найти ошибку в JS запросе

Svileff

Новичок
Есть элемент формы
Код:
<template id="form0">
                       <div class="form-row mb-2">
                                <input type="hidden" name="id" value="">
                                <input type="hidden" name="type" value="service">
                                <input type="hidden" name="day_e" value="6648301">
                                 <div class="form-group col-sm-12">
                                         <input type="text" class="form-control" name="name_service" placeholder="Название">
                                 </div>
                                 <div class="form-group col-sm-3">
                                          <select name="activity_service" onchange="upldinfo('0');" class="form-control">
                                                     <option value="souvenir-group">Souvenir</option>
                                                     <option value="ppk-small-group">PPF pass (sedan)</option>
                                          </select>
                                  </div>
                                  <div class="form-group col-sm-3">
                                           <input class="form-control" name="description_service" placeholder="Продолжительность"/>
                                   </div>
                                   <div class="form-group col-sm-2">
                                            <input type="number" class="form-control" name="cost_service">
                                   </div>
                                   <div class="form-group col-sm-2">
                                             <input type="number" class="form-control" name="cost_one_service">
                                   </div>
                                   <div class="form-group col-sm-2">
                                             <input type="text" class="form-control" name="sum_service" id="sum_service">
                                   </div>
                                    <div class="form-group col-sm-1">
                                              <a href="#" class="delete-button">Удалить</a>
                                    </div>
                          </div>
</template>
Таких форм может быть много но у них есть отличий id="form0". Цифра разная. При выборе select мы запускаем функцию и надо вернуть значение обратно на эту форму и вставить в другие input.
Код:
<script>
                  function upldinfo(id) {
                                    var d = [];
                                    var rows = $('#form').id;
                                    for(var i = 0; i < rows.length; i++) {
                                       r = {};
                                          j = $(rows[i]).find('select, hidden');
                                          for(var k = 0; k < j.length; k++) {
                                            r[$(j[k]).attr('name')] = $(j[k]).val()
                                          }
                                          d[d.length] = r;
                                    }
                                   $.ajax({
                                       url: '/TransferAjax.php',
                                          type: "POST",
                                          data: {data3: JSON.stringify(d)},
                                          success: function() {
                                               
                                          },
                                          dataType: 'json'
                                    });
                                    console.log(d.val());
$("#sum_service").html(result);
                                };
    </script>
Вот то что я успел написать и получаю ошибку но не могу понять как мне двигаться дальше. В JS я новичок. Помогите пожалуйста.
 
Последнее редактирование:
<select name="activity_service" onchange="upldinfo('0',this);" class="form-control">
JavaScript:
function upldinfo(id, element) {
var d = [], form=$(element.form)||$(element).closest('form);
if(!form || form.count==0) return false ; //если пусто - шеф, все пропало!!!!
// form - та форма, в которой кликнули селект, или просто какой-то элемент
...
а вот что ты там дальше делаешь, я что-то совсем не понимаю... Нафига тебе 100500 форм для отправки в одно и то же место ?

Если все таки нужно именно из всех форм на странице повыковыривать данные - можно добавить к каждой такой форме класс, например "cloud", в итоге селектор для выбора всех твоих полей будет $('form.cloud').find('select') и оттуда уже можешь ковырять данные дальше
 
Последнее редактирование:
Все группы форм разные по своему виду. Поэтому приходится в цикле перебирать элементы.
 
<select name="activity_service" onchange="upldinfo('0');" class="form-control">
Я исправил на var rows = $('form'.id); но получаю пустой массив json date3[] видимо в rows нечего не попадает.
 
Мне надо исправить эту функцию
Код:
function upldinfo(id){
             var d = [];
             var rows = $('#form'.id);
             for(var i = 0; i < rows.length; i++) {
             r = {};
             j = $(rows[i]).find('select, hidden');
             for(var k = 0; k < j.length; k++) {
                      r[$(j[k]).attr('name')] = $(j[k]).val()
                      }
                      d[d.length] = r;
             }
             console.log(d);
             $.ajax({
                   url: '/TransferAjax.php',
                   type: "POST",
                   data: {data3: JSON.stringify(d)},
                   success: function() {
             },
             dataType: 'json'
             });
            
             $("#sum_service").html(result);
};
 
Последнее редактирование:
Выбрать по "похожему" ID - это какое-то извращение. Нужно класс добавлять. Но если хочется странного, конечно можно. Сначала достать все формы, потом проверить, что у формы "подходящий" ID, потом уже сделать что хочется
Код:
function upldinfo(id){
             var d = [];
             var rows = $('form');
             for(var i = 0; i < rows.length; i++) {
             if (!$(rows[i]).attr('id').match(/form\d+/)) continue;
             r = {};
...
Ну отладчиком нужно пользоваться, тем более, что встроенный практически везде. Ctrl-Shift-J в хроме.
 
Выбрать по "похожему" ID - это какое-то извращение. Нужно класс добавлять. Но если хочется странного, конечно можно. Сначала достать все формы, потом проверить, что у формы "подходящий" ID, потом уже сделать что хочется
Код:
function upldinfo(id){
             var d = [];
             var rows = $('form');
             for(var i = 0; i < rows.length; i++) {
             if (!$(rows[i]).attr('id').match(/form\d+/)) continue;
             r = {};
...
Ну отладчиком нужно пользоваться, тем более, что встроенный практически везде. Ctrl-Shift-J в хроме.
У групп форм идет <template id="form0"> свой ID. ссылаясь на функцию передаем номер ID. Поэтому я и указал $('#form'.id); с надеждой что получу значение из группы формы form0 значение.
 
все с получением разобрался, отправляю в обработчик. Получаю результат в виде месива. Вопрос как массив расставить по input
$("#sum_service").html(result);
не срабатывает или я неправильно указал?
$("#sum_service").html(result['sum_service']);
пробивал и так
 
Последнее редактирование:
А что говорит console.log(result); ?
И откуда вообще взялся result?
Тут что-то намешано походу.
 
Последнее редактирование:
Ну я и прошу помочь разобраться. Мы отправляем в обработчик данные а обратно получаем массив который надо поставить в формы. Помогите это сделать.
 
Ну я и прошу помочь разобраться. Мы отправляем в обработчик данные а обратно получаем массив который надо поставить в формы. Помогите это сделать.
Пока не ответите на мой вопрос.
Помощи не будет, за вас никто не будет делать.
 
Вопрос снят. Сам разобрался. Не вижу смысла больше сюда обращаться. Серовно никто не может помочь. Уже не первый раз.
 
Вопрос снят. Сам разобрался. Не вижу смысла больше сюда обращаться. Серовно никто не может помочь. Уже не первый раз.
А смысл вам помогать, если вы не отвечаете на вопросы?
И не хотите думать!
Уже не первый раз!
Если бы внимательно посмотрели, то result переменной, не существует.
 
Последнее редактирование:
Сверху