Задать вопрос
@makedonets

Как отправить весь массив аргументов?

Добрый день, создаю дополнительные поля в форме при нажатии на кнопку. Вот код самой формы
<h3>Имеющиеся кредиты</h3>
        <div id="table_containerCredit">
        <div class="credit_div">
              <label for="af_bank_name">Наименование банка:</label>
                <input type="text" name="bank_name[]">
             <label for="af_credit_type">Вид кредита: <p>кредитная карта, потребительский кредит, ипотека и т.д.</p></label>
                <input type="text" name="credit_type[]">
              <label for="af_credit_sum">Сумма ежемесячного платежа:</label>
                <input type="text" name="af_credit_sum[]">
             <label for="af_credit_start">Дата получения кредита:</label>
                <input type="text" name="credit_start[]">
               <label for="af_credit_finish">Дата погашения кредита:</label>
                <input type="text" name="credit_finish[]">
        </div>
        </div>
        <input type="hidden" id="credit_hidden" name="credit_hidden" value="Нет кредитов">
          <input type="button" value="Добавить поле" id="addCredit" class="btn" name="addKredit" onclick="return add_new_image();">

Далее скриптом ловятся эти значения
$('#send_anketa').click(function() {
    var arr_out = new Array;
    $('.credit_div').each(function(indx, element){
        bank_name=$(element).find('[name="bank_name[]"]').val();
        credit_type=$(element).find('[name="credit_type[]"]').val();
        af_credit_sum=$(element).find('[name="af_credit_sum[]"]').val();
        credit_start=$(element).find('[name="credit_start[]"]').val();
        credit_finish=$(element).find('[name="credit_finish[]"]').val();      arr_out.push({"bname":bank_name,"ctype":credit_type,"acs":af_credit_sum,"cstart":credit_start,"cfinish":credit_finish});
    });
    var str_json = JSON.stringify(arr_out);
    $("#credit_hidden").val(str_json);
    console.log($("#credit_hidden").val());
    return true;
});

После этого массив данных обрабатывается в php
<?php
$value = $modx->getPlaceholder('credit_hidden');
    //$debug='<tr><td> debug= '.'</td><td>'.var_export($value,true).'</td></tr>';
    $value=str_replace('&quot;','"',$value);
    $arr=json_decode($value,true);
    $output='';
    foreach($arr as $el){
        $output.='<tr><td>'.$el['bname'].'</td><td>'.$el['ctype'].'</td><td>'
                 .$el['acs'].'</td><td>'.$el['cstart'].'</td><td>'.$el['cfinish'].'</td></tr>';
    }
    return $output;

Но в скрипт попадает только значение первых полей. Пересмотрел код, несколько раз, не понимаю в чем проблема.
В отладчике браузера строка [{"bname":"Кредит 1","ctype":"вид кредита 1","acs":"1","cstart":"1","cfinish":"1"}] . Значит скрипт не принимает массив значений
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@maxsolovev
Frontend-developer
JSON же не просто так завезли. Это раз. Два, юзайте serializeArray какой-нить для удобства сбора значений формы, вместо той жути, что написана у вас.
Ответ написан
Комментировать
@makedonets Автор вопроса
Максим Соловьёв , мне в любом случае нужно будет для корректно отображения в письме запихивать данные с json в php-обработчик.
Но за serializeArray спасбо)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы