如何将内部变量传递给php中的控制器

时间:2018-09-24 01:47:41

标签: javascript php html ajax codeigniter

我需要将变量从javascript传递到控制器。该值是通过html中的select option获得的,并且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 :(得分:1)

在代码中,您两次使用了变量month的值,而不是将'month'定义为$ _POST全局变量的名称:

data    : {month:month},

解析后,例如如果所选月份是四月,则结果为:

data    : {April:April},

您实际上想拥有的时间

data    : {month:April},

因此,我建议您更改代码,并将变量名用引号引起来:

data    : {'month':month},

那样,PHP脚本实际上将具有一个$ _POST ['month']来与;)

答案 1 :(得分:0)

您在控制器内部写下条件,以便ajax结果只是纯文本。

答案 2 :(得分:0)

您误解了ajax的工作原理。 JS是客户端,而php是服务器端。无论您是否选择异步页面上的php,都已经已经被渲染,因此事后您无法更改php代码或变量。最好的办法是在成功回调中操纵div(似乎您已经在尝试这样做)。

因此,在ajax控制器(SELECT it1.label, it1.reportingDate, it1.attr_3 FROM (SELECT * FROM illustrativeTable WHERE label IN ('A', 'B', 'C', 'E') AND (attr_2-attr_1=3) AND attr_3 IS NOT NULL) it1 JOIN (SELECT label, MAX(reportingDate) AS max_reportingDate FROM illustrativeTable it1 WHERE attr_2-attr_1=3 AND attr_3 IS NOT NULL GROUP BY label) it2 ON it2.label = it1.label AND it2.max_reportingDate = it1.reportingDate JOIN (SELECT label, reportingDate, MAX(attr_2) AS max_attr_2 FROM illustrativeTable it1 WHERE attr_2-attr_1=3 AND attr_3 IS NOT NULL GROUP BY label, reportingDate) it3 ON it3.label = it1.label AND it3.reportingDate = it1.reportingDate AND it3.max_attr_2 = it1.attr_2 ORDER BY it1.label )中,您可以这样做:

MAX(attr_2)

并通过lapkinerjastat复制您的逻辑(您在服务器端php中使用的逻辑)。

我不知道为什么要为此使用ajax。您可以使用简单的js轻松完成所有操作。