Помогите найти ошибку в 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 я новичок. Помогите пожалуйста.
 
Последнее редактирование:

ksnk

прохожий
<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') и оттуда уже можешь ковырять данные дальше
 
Последнее редактирование:

Svileff

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

Svileff

Новичок
<select name="activity_service" onchange="upldinfo('0');" class="form-control">
Я исправил на var rows = $('form'.id); но получаю пустой массив json date3[] видимо в rows нечего не попадает.
 

Svileff

Новичок
Мне надо исправить эту функцию
Код:
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);
};
 
Последнее редактирование:

ksnk

прохожий
Выбрать по "похожему" 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 в хроме.
 

Svileff

Новичок
Выбрать по "похожему" 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 значение.
 

Svileff

Новичок
все с получением разобрался, отправляю в обработчик. Получаю результат в виде месива. Вопрос как массив расставить по input
$("#sum_service").html(result);
не срабатывает или я неправильно указал?
$("#sum_service").html(result['sum_service']);
пробивал и так
 
Последнее редактирование:

Squats

Новичок
А что говорит console.log(result); ?
И откуда вообще взялся result?
Тут что-то намешано походу.
 
Последнее редактирование:

Svileff

Новичок
Ну я и прошу помочь разобраться. Мы отправляем в обработчик данные а обратно получаем массив который надо поставить в формы. Помогите это сделать.
 

Squats

Новичок
Ну я и прошу помочь разобраться. Мы отправляем в обработчик данные а обратно получаем массив который надо поставить в формы. Помогите это сделать.
Пока не ответите на мой вопрос.
Помощи не будет, за вас никто не будет делать.
 

Svileff

Новичок
Вопрос снят. Сам разобрался. Не вижу смысла больше сюда обращаться. Серовно никто не может помочь. Уже не первый раз.
 

Squats

Новичок
Вопрос снят. Сам разобрался. Не вижу смысла больше сюда обращаться. Серовно никто не может помочь. Уже не первый раз.
А смысл вам помогать, если вы не отвечаете на вопросы?
И не хотите думать!
Уже не первый раз!
Если бы внимательно посмотрели, то result переменной, не существует.
 
Последнее редактирование:
Сверху