2016-07-28 49 views
0

私の問題は、私のメインの ページに含まれるphp変数に、ajaxによって呼び出されるphpファイルからアクセスできないことです。HIGHCHARTS - Ajaxによって呼び出されるphpファイルからのJquery/AjaxアクセスPHP変数

それにアクセスする方法はありますか私は

PHP AJAXによって呼び出された私のPHPファイルでPHPファイルを含める必要があります。variables.php

<?php 
    $myServername = "local_host"; 
    $myUsername = "user"; 
    $myPassword = "password"; 
    $myDbname = "dbname"; 
?> 

PHP:connection.php *接続変数

liveserverdata.php:variable.phpに定義されている私のメインページ

<?php 
    $conn = mysqli_connect($myServername, $myUser, $myPassword, $myDatabase); 

    // verify connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
?> 

PHPの先頭に含ま

<?php 
    header('Content-type: application/json'); 

    //GET MYSQL DATA 

    // Create connection 
    include ("connection.php"); 

    $sqlGetHoraire = "SELECT * FROM mytable ORDER by id ASC"; 

    $result = $conn->query($sqlGetHoraire); 

    while($row = $result->fetch_assoc()) 
    { 
     //DO THINGS HERE 
    } 

    // CALCULATE VALUES 

    // The x value is the current JavaScript time, which is the Unix time  multiplied by 1000. 
    $x = time() * 1000; 
    // The y value is the quatity of paper lost for this work period 
    $y = rand(0, 100); 

    // Create a PHP array and echo it as JSON (Date,Value) 
    $ret = array($x, $y); 


    // Data return to ajax function 
    echo json_encode($ret); 
?> 

JAVASCRIPT:LiveData.js

$(function() { 
var chart; // global 

function requestData() { 
    $.ajax({ 
     type: "POST", 
     url: 'liveserverdata.php', 
     success: function(point) { 
      //Action with the data from the php 
      var series = chart.series[0]; 
      var Shift = series.data.length > 20; // shift if the series is longer than 20 

      // add the point 
      chart.series[0].addPoint(eval(point), true, Shift); 

      //Change Title 
      chart.setTitle({text: "Title " + point[1]});  

      // call it again after one second 
      setTimeout(requestData, 1000); 
     }, 
     cache: false 
    }); 
} 

$(document).ready(function() { 
    chart = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'MyLiveData', 
      defaultSeriesType: 'spline', 
      events: { 
       load: requestData 
      } 
     }, 
     xAxis: { 
      type: 'datetime', 
      tickPixelInterval: 150, 
      maxZoom: 20 * 1000 
     }, 
     yAxis: { 
      minPadding: 0.2, 
      maxPadding: 0.2, 
      title: { 
       text: 'Pied', 
      } 
     }, 
     series: [{ 
      name: moment().format('DD MM YYYY'), 
      data: [] 
     }] 
    });  
}); 
}); 

HTML/PHP:index.phpの*私のメインページ

<?php include ("variables.php"); ?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <script src = "LiveData.js"></script> 
    </head> 
    <body class="mybody"> 
     <div id="MyLiveData" class="section-chart"></div> 
    </body> 

Thxをたくさん

ダニエル

解決策:ajaxが呼び出すphpファイルにvariable.phpを直接記述します。

PHP:connection.php

include ("variables.php") 
<?php 
    $conn = mysqli_connect($myServername, $myUser, $myPassword, $myDatabase); 

    // verify connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 
?> 
+1

どこにも定義されているmysqli_connectで使用される変数はありません。 – aynber

+0

@aynber UPDATED –

+1

エラーログを確認しましたか?データを返すだけではないのですか、それとも何らかのエラーを返すのでしょうか? – aynber

答えて

1

変数は、彼らだけがでているスコープからアクセス可能な、あなたが別のページにAJAX呼び出しを行うと、そのページは、あなたがそれを送信するもの以外のものにアクセスすることはできません。そしてそれがそれ自身で集めるもの。呼び出しページのスコープの一部ではありません。 variables.phpをconnection.phpに含める必要があります(接続が必要な場合は常にそこにあります)、またはliveserverdata.phpに含めてください。

+0

多くのThx!今すぐ完璧に:) –

関連する問題