我想让列表值成为javascript中的变量来完成公式:10 * vHasil_m * 32.03* 1000/5。
我有一个这样的查询:
select round(avg(cast(t_dtl.hasil_m as decimal(6,4))),4) as hasil_m from t_hdr JOIN t_dtl ON t_hdr.headerid = t_dtl.headerid where id_solvent ='NaOH' AND status='ok' AND concentrate='0.0100' AND date_start <='2016-05-01' AND date_finish >='2016-05-01'
查询结果如下:
| hasil_m |
| ----------- |
| 0.0100 |
我希望以上列值成为公式 vHasil_m 的变量。
为了运行该查询,我创建了一个模型:
function getdata_naoh($datetest){
$result = $this->db1->query("select round(avg(cast(t_dtl.hasil_m as decimal(6,4))),4) as hasil_m from t_hdr JOIN t_dtl ON t_hdr.headerid = t_dtl.headerid where id_solvent ='NaOH' AND status='ok' AND concentrate='0.0100' AND date_start <='$datetest' AND date_finish >='$datetest'");
if($result->num_rows()>0){
return $result->result_array();
}else{
return array();
}
}
以及执行它的 Controller :
function get_NaOH(){
$date_analysis = trim($this->input->post('date_analysis'));
$datetest = trim($this->input->post('date_analysis'));
$datetest = substr($datetest,6,4).'-'.substr($datetest,3,2).'-'.substr($datetest,0,2);
$dtnaoh = $this->M_tambahan->getdata_naoh($datetest);
foreach($dtnaoh as $row){
$data1 .= $row[hasil_m];
}
$data = $data1;
echo $data;
}
然后我创建一个像这样的ajax:
<script type="text/javascript">
$(document).ready(function(){
$(document).on('change','.no_picno', function() {
var that = $(this);
var dt_no = that.val();
console.log(that.next());
var col_date_analysis = that.parent().prev().find('.date_analysis');
var date_analysis = col_date_analysis.val();
$.ajax({
type :"post",
url : "<?php echo base_url();?>index.php/additionals/file/C_utils/get_NaOH",
data : { date_analysis: date_analysis, no_picno: dt_no },
success: function(data){
// code here
}
});
});
});
</script>
ajax 已经正常工作,没有错误,然后我创建一个 javascript 来运行公式:
<script type="text/javascript">
function getTotal() {
var obj = document.getElementsByTagName('input');
for(var i=0; i < obj.length; i++) {
if (obj[i].name == "sulfur_vnaoh[]") {
var dt_sulfur_vnaoh = obj[i].value;
};
if (obj[i].name == "sulfur_ws[]") {
var dt_sulfur_ws = obj[i].value
};
if (obj[i].name == "sulfur_hasil[]") {
if ((dt_sulfur_ws != '')&&(dt_sulfur_vnaoh != '')) {
var totalSulfur = 10*vHasil_m*32.03*1000/5;
obj[i].value = totalSulfur;
} else {
obj[i].value = '';
};
};
}
};
</script>
如何在 JavaScript 中声明或初始化 ajax 结果到变量中以完成该公式?
谢谢。
最佳答案
在你的ajax代码中,你需要创建一个全局变量来存储你的数据:
<script type="text/javascript">
$(document).ready(function(){
$(document).on('change','.no_picno', function() {
var that = $(this);
var dt_no = that.val();
console.log(that.next());
var col_date_analysis = that.parent().prev().find('.date_analysis');
var date_analysis = col_date_analysis.val();
$.ajax({
type :"post",
url : "<?php echo base_url();?>index.php/additionals/file/C_utils/get_NaOH",
data : { date_analysis: date_analysis, no_picno: dt_no },
success: function(data){
window.data=data;
}
});
});
});
</script>
然后在 ajax 调用之后,触发 getTotal()
函数,然后在公式中使用 window.data
而不是使用 vHasil_m
:
<script type="text/javascript">
function getTotal() {
var obj = document.getElementsByTagName('input');
for(var i=0; i < obj.length; i++) {
if (obj[i].name == "sulfur_vnaoh[]") {
var dt_sulfur_vnaoh = obj[i].value;
};
if (obj[i].name == "sulfur_ws[]") {
var dt_sulfur_ws = obj[i].value
};
if (obj[i].name == "sulfur_hasil[]") {
if ((dt_sulfur_ws != '')&&(dt_sulfur_vnaoh != '')) {
var totalSulfur = 10*window.data*32.03*1000/5;
obj[i].value = totalSulfur;
} else {
obj[i].value = '';
};
};
}
};
</script>
关于javascript - Ajax获取列表值成为javascript中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427284/