我有一个JavaScript函数,当我调用这个函数时它会返回一个增量值这个值是在PHP全局变量
中设置的js的调用函数是:dData()
Js功能:
var dData = function() {
alert(<?php returnincreament($_SESSION['UnarJ']); ?>);
};
php函数
function returnincreament($a){
$_SESSION['UnarJ']=$a+1;
}
我想增加的警报值应该是1,2,3,4,5,6等
JSCODE
var datas = {
labels: ["12 AM","1 AM", "2 AM", "3 AM", "4 AM", "5 AM", "6 AM","7 AM", "8 AM", "9 AM", "10 AM", "11 AM"],
datasets: [{
fillColor: "rgba(78,156,181,.5)",
strokeColor: "rgba(2,119,158,1)",
data: [
<?php
$j=0;
for($j=0;$j<12;$j++)
{
echo round($udData[$j]);
if($j<12){
echo ",";
}
$_SESSION['udbarJ']=$j;
}
?>]
}]
};
var returndata=0;
var nextcount=0;
var dData = function() {
$.post( "includes/hourlyud.php", function( data ) {
//var p=data;
returndata=data;
});
return returndata;
};
var index = 11;
var currentampm="AM";
var ctxs = document.getElementById("cd").getContext("2d");
var barChartLine = new Chart(ctxs).Line(datas, {
responsive: true,
barValueSpacing: 5,
bezierCurve: false
});
var ampm = function(amorpm,cstat) {
if(amorpm===12 && cstat==="AM"){
return "PM";
}
if(amorpm===12 && cstat==="PM"){
return "AM";
}
if(amorpm>=1 && cstat==="AM"){
return "AM";
}
else return "PM";
};
setInterval(function() {
barChartLine.removeData();
barChartLine.addData([dData()], index + ampm(index,currentampm));
index++;
if(index>12){
if ((ampm(index,currentampm))==="AM"){
currentampm="PM";
}
else
currentampm="AM";
index=1;
}
}, 5500);
PHP是服务器端,它在页面加载之前执行,所以:
<?php returnincreament($_SESSION['UnarJ']); ?>
总是它原来的值。查看源代码,您应该看到:
var dData = function() {
alert(1);
};
现在要使此工作,您需要AJAX,它将发送请求到服务器上的PHP脚本并获得返回的结果。使用jquery可以这样做:
var dData = function() {
$.post( "file.php", function( data ) {
alert( data );
});
}
那么在file.php
中,您只需要:
<?php
session_start();
$_SESSION['UnarJ']= ++$_SESSION['UnarJ'];
echo $_SESSION['UnarJ'];
假设$_SESSION['UnarJ']
已经设置,如果没有添加(在session_start();
之后):
if(empty($_SESSION['UnarJ'])) {
$_SESSION['UnarJ'] = 0;
}
由于PHP是服务器端,javascript是客户端,它不会像这样工作。您必须使用AJAX才能使其工作。
像调用ajax请求到php脚本->添加+1 ->返回值到您的警报