我需要一些帮助,我将使用morris.js创建图表,但我发现一些问题,当我在php标签的管道mongoDB中使用detailIp
时(如show bellow)但没有结果显示。我不知道为什么。
如何传递detailIp
以便它可以在php标签中使用?
谢谢你,对不起我的英语太糟糕了:(
这是我的代码:
<script>
$(document).on("click", ".open-detail", function () {
var detailIP = $(this).data('id');
document.getElementById("header_ip").innerHTML = "IP "+detailIP;
document.getElementById('ip').innerHTML =detailIP;
Morris.Area({
element: 'graph1',
behaveLikeLine: true,
data: [
<?php
ini_set('max_execution_time', 600);
ini_set('memory_limit', '2048M');
$m = new MongoClient("192.168.80.20");
$db= $m->blacklist;
$col=$db->score;
$cursor=$col->find(array("ip_blacklist"=>"'".detailIP."'"));
$detail_ip=array();
foreach ($cursor as $document) {
$detail_ip[]=$document;
}
$score=array();
$time=array();
for ($a=0; $a < sizeof($detail_ip); $a++) {
$score[]=$detail_ip[$a]["score"];
$time[]=date("Y-m-d H:i:s",$detail_ip[$a]["timestamp"]->sec);
}
for ($i=0; $i < sizeof($detail_ip) ; $i++) {
echo "{date:'".$time[$i]."',count:".$score[$i]."},";
}
?>
],
xkey: 'date',
ykeys: ['count'],
labels: ['Y']
});
if($('#graph1').find('svg').length > 1){
$('#graph1 svg:first').remove();
$(".morris-hover:last").remove();
}
});
</script>
答案 0 :(得分:0)
你必须使用ajax:
<script>
$(document).on("click", ".open-detail", function () {
var detailIP = $(this).data('id');
document.getElementById("header_ip").innerHTML = "IP "+detailIP;
document.getElementById('ip').innerHTML =detailIP;
$.ajax({
type: "get",
url: "... php file address ...",
format : 'html',
success: function (data)
{
Morris.Area({
element: 'graph1',
behaveLikeLine: true,
data: [data], // <<=== data from ajax
xkey: 'date',
ykeys: ['count'],
labels: ['Y']
});
if($('#graph1').find('svg').length > 1){
$('#graph1 svg:first').remove();
$(".morris-hover:last").remove();
}
});
}
});
</script>
在php文件中:
<?php
ini_set('max_execution_time', 600);
ini_set('memory_limit', '2048M');
$m = new MongoClient("192.168.80.20");
$db= $m->blacklist;
$col=$db->score;
$cursor=$col->find(array("ip_blacklist"=>"'".detailIP."'"));
$detail_ip=array();
foreach ($cursor as $document) {
$detail_ip[]=$document;
}
$score=array();
$time=array();
for ($a=0; $a < sizeof($detail_ip); $a++) {
$score[]=$detail_ip[$a]["score"];
$time[]=date("Y-m-d H:i:s",$detail_ip[$a]["timestamp"]->sec);
}
for ($i=0; $i < sizeof($detail_ip) ; $i++) {
echo "{date:'".$time[$i]."',count:".$score[$i]."},";
}
?>
答案 1 :(得分:0)
你可以进行ajax调用,将你的js varibale传递给你的php代码。 这是一个例子。
$.ajax({
url: "/your_controller_the_php_code/the_action_the_php_function",
dataType: "json",
data: {
your_js_variable: detailIP
},
success: function( data ) {
/*this is where you do what you want to do when you get the response from your php code*/
}
});
希望它有用