Как передать переменную javascript в view контроллеру в php - PullRequest
0 голосов
/ 24 сентября 2018

Мне нужно передать значение переменной из JavaScript в контроллер .Значение получается select option в html, а код javascript - внутри представления .Я написал код, но он просто показывает значение, которое я выбрал для HTML, и не сохраняется в переменной php.

Вот мой javascript код:

$('#button-search-ohr').on('click', function() {
    var month = $('#monthChoose').val();

    if(month == 0) {
        alert('Month must be choosen!');
    }

    $.ajax({
        async   : true,
        type    : 'POST',
        url     : '<?php echo base_url();?>sms/lapkinerjastat', //this url to controller
        data    : {month:month},
        success : function(data) {
            $('#month').html(data);
        }
    });
}

А вот и мой html :

<h5 class="pilih-bulan">Month Choose
     <select id="monthChoose" name="month">
          <option value="0">Pilih bulan</option>
          <option value="Januari">Januari</option>
          <option value="Februari">Februari</option>
          <option value="Maret">Maret</option>
          <option value="April">April</option>
          <option value="Mei">Mei</option>
          <option value="Juni">Juni</option>
          <option value="Juli">Juli</option>
          <option value="Agustus">Agustus</option>
          <option value="September">September</option>
          <option value="Oktober">Oktober</option>
          <option value="November">November</option>
          <option value="Desember">Desember</option>
     </select>
     <button id="button-search-ohr" type="submit">Search</button>
</h5>

<div id='month'>
    <?php 
    if(isset($_POST['month'])) {
        $month = $_POST['month'];
        echo 'This is '.$month;
    }else {
        $month = null;
        echo 'Nothing';
    }?>
</div>

Примечание: лучше будет использовать ajax для передачи переменной в контроллер.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

вы записываете условие внутри вашего контроллера, так что результатом ajax будет просто текст.

0 голосов
/ 24 сентября 2018

Вы неправильно понимаете, как работает ajax.JS на стороне клиента, а php на стороне сервера.Независимо от того, выбираете ли вы асинхронный php на странице, уже отображается, таким образом, вы не можете изменить код php или переменные после факта.Лучшее, что вы можете сделать, это манипулировать div в обратном вызове успеха (который, кажется, вы уже пытаетесь это сделать).

Итак, в вашем контроллере ajax (lapkinerjastat) вы должны сделать:

$month = $this->input->post('month');
if (is_null($month)) {
    echo 'This is ' . $month;
} else {
    echo 'Nothing';
}

и через $('#month').html(data); ваша логика (которая была у вас в php на стороне сервера) реплицируется.

Почему вы хотите ajax для этого, я не знаю.Вы можете легко сделать все это с прямыми JS.

0 голосов
/ 24 сентября 2018

В вашем коде вы используете значение переменной month дважды, вместо того, чтобы определять 'month' как имя переменной $ _POST global:

data    : {month:month},

После синтаксического анализа, в случае, еслинапример, выбранный месяц - апрель, результат:

data    : {April:April},

, в то время как вы действительно хотите иметь

data    : {month:April},

Таким образом, я предлагаю изменить ваш код и просто обернуть имя переменной в кавычки:

data    : {'month':month},

Таким образом, PHP-скрипт на самом деле будет иметь $ _POST ['month'] для работы;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...