Как отправить динамические данные с помощью Ajax для контроллера codeigniter - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть форма, содержащая циклический тег ввода, который используется для добавления данных. Форма зацикливания - это работа, и проблема в том, что я не знаю, как извлечь эти зацикливающиеся данные в воспламенитель кода контроллера. пожалуйста, помогите!

это мой взгляд (форма)

<form action="#" id="ap_data">
  <div class="table-responsive">
   <table class="table table-striped table-hover" id="mkt">
    <thead>
     <tr>
      <th>KR</th>
      <th>NP</th>
      <th>KP</th>
     </tr>
    </thead>
    <tbody>
    <?php $number =0;
    $id = "id";
    $idkr = "idkr";
    $np = "np";
    $idkp = "idkp";?>
    <?php foreach ($perb as $value) { 
    $number++; ?>
    <tr>
       <input type="hidden" name="<?php echo $id.$number; ?>" value="<?php echo $value->idp ?>"/>
      <td>
       <input type="text" placeholder="" name="<?php echo $idkr.$number; ?>" value="<?php echo $value->idkp ?>" class="form-control">
      </td>
      <td>
       <select name="<?php echo $np.$number; ?>" class="form-control">
        <option value="1">1 (AS)</option>
        <option value="2">2 (Bold)</option>
        <option value="3">3 (Seed)</option>
       </select>
      </td>
      <td>
       <input type="text" placeholder="" name="<?php echo $idkp.$number; ?>" value="<?php echo $value->idkp ?>" id="class="form-control">
      </td>
    </tr>
  <?php } ?>
  </tbody>
 </table>
 </div>
 <div class="form-group">
  <button type="button" onclick="test_kond()" class="btn btn-success col-lg-12">Test Kond</button>
 </div>
</form>

здесь 'мой взгляд (функция Ajax)

<script type="text/javascript">
  var test_kond;
  $( document ).ready(function() {
    test_kond = function () {
    var data_ap;
    data_ap = $("#ap_data").serialize();
    $.ajax({
      type: "POST",
      url: "<?php echo site_url('HoldBotCtrl/kond_ajax')?>",
      data: data_app,
      success: function() {
         alert(data_ap);
      }
   });
 };

});

и вот мой контроллер

function kond_ajax(){
$k_t = $this->Hb_model->select_kr();
$j_kr = count($kr_total);
$idkr = "idkr";
$np = "np";
$idkp ="idkp";

for ($i=1; $i <= $jj_kr ; $i++) { 
  $idkrr = $idkr.$i;
  $npp = $np.$i;
  $idkpp = $idkp.$i;

  $data_ap = array(
    $idkrr => $this->input->post($idkrr),
    $npp   => $this->input->post($npp),
    $idkpp => $this->input->post($idkpp)
  );
   print_r($data_ap);

}

и это результат print_r

idkr1Array ([idkr1] => [np1] => [idkp1] =>) idkr2Array ([idkr2] => [np2] => [idkp2] =>)

значение все еще нулевое, мне нужно получить данные из $ this-> input-> post () ;. как это исправить ??

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Просто попробуйте изменить имена полей, как показано ниже:

<form action="#" id="ap_data">
  <div class="table-responsive">
   <table class="table table-striped table-hover" id="mkt">
    <thead>
     <tr>
      <th>KR</th>
      <th>NP</th>
      <th>KP</th>
     </tr>
    </thead>
    <tbody>
    <?php $number =0;
    $id = "id";
    $idkr = "idkr";
    $np = "np";
    $idkp = "idkp";?>
    <?php foreach ($perb as $value) { 
    $number++; ?>
    <tr>
       <input type="hidden" name="data[<?= $number ?>]['id']" value="<?php echo $value->idp ?>"/>
      <td>
       <input type="text" placeholder="" name="data[<?= $number ?>]['idkr']" value="<?php echo $value->idkp ?>" class="form-control">
      </td>
      <td>
       <select name="data[<?= $number ?>]['np']" class="form-control">
        <option value="1">1 (AS)</option>
        <option value="2">2 (Bold)</option>
        <option value="3">3 (Seed)</option>
       </select>
      </td>
      <td>
       <input type="text" placeholder="" name="data[<?= $number ?>]['idkp']" value="<?php echo $value->idkp ?>" id="" class="form-control">
      </td>
    </tr>
  <?php } ?>
  </tbody>
 </table>
 </div>
 <div class="form-group">
  <button type="button" onclick="test_kond()" class="btn btn-success col-lg-12">Test Kond</button>
 </div>
</form>

и в вашем контроллере:

function kond_ajax(){
   print_r($this->input->post());
}

Надеюсь, это поможет:)

0 голосов
/ 01 ноября 2018

Я думаю, что метод serilize () создает строку в кодировке URL, где вы хотите отправлять данные с помощью метода POST в ajax. Вы можете попробовать это так.

var test_kond;
  $( document ).ready(function() {
    test_kond = function () {
    var data_ap;
    data_ap = new FormData($("#ap_data"));
    $.ajax({
      type: "POST",
      url: "<?php echo site_url('HoldBotCtrl/kond_ajax')?>",
      data: data_app,
      success: function() {
         alert(data_ap);
      }
   });
 };
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...