我需要将变量从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将变量传递给控制器。
答案 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轻松完成所有操作。