如何将变量javascript传递给php

时间:2017-10-07 13:01:25

标签: javascript php

我需要一些帮助,我将使用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>

2 个答案:

答案 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*/
          }
      });

希望它有用