我有一个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);
答案 0 :(得分:0)
由于PHP是服务器端而javascript是客户端,因此它不会像这样工作。您必须使用AJAX才能使其正常工作。
就像调用php脚本的ajax请求一样 - &gt;添加+1 - &gt;将值返回警报。
答案 1 :(得分:0)
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;
}