如何在不使用include()的情况下从不同的PHP脚本访问变量

时间:2014-02-17 16:29:14

标签: javascript php ajax

我是PHP的新手,我正在努力完成一些相对简单的事情。我正在尝试让PHP从MySQL读取数据并将其绘制在Web界面上。主脚本(index.php)中的代码查询MySQL并将两个数值数组读入两个php变量$ x和$ y。加载数据后,可以使用AJAX在index.php上绘制数据。用户可以单击按钮(html),其中onclick事件使用AJAX加载另一个将执行所需绘图的php脚本。我不得不将绘图代码(对于几种类型的绘图)添加到单独的文件而不是index.php中的函数,因为AJAX和onclick事件只能加载服务器上的另一个文件(例如php文件)而不是一个php函数在同一个文件中,变量是(index.php)。因此,执行绘图的php脚本无法访问变量$ x和$ y,因为它们是在index.php中声明的。我正在寻找一种方法来使变量$ x,$ y(在index.php中声明)可以从AJAX调用的不同绘图脚本中访问。

我尝试将其声明为静态和全局,但它们($ x和$ y)在绘图脚本中仍然是看不见的。显然我不能在绘图脚本中导入index.php,也不能从文件中写入和读取$ x和$ y。我尝试使用一个JavaScript函数,它将使用document.write()在onclick中包含绘图代码,长话短说它也没有用,我也无法在互联网上找到解决方案。

<?php

//loading data from mysql
$x = ... //$x and $y are declared here
$y = ...

//basicplot.php is unable to access $x and $y
echo "<button type=\"button\" onclick=\"loadXMLDoc('basicplot.php', 'mydiv')\">Plot data</button>";
echo "<div id=\"mydiv\"><br>[plot goes here]</div>";

?>

注意:当我将代码从basicplot.php复制到index.php时,绘图确实有效,但是因为我想要有许多类型的绘图,而这些绘图并不是真正的选择。

4 个答案:

答案 0 :(得分:2)

在对服务器的一个请求中运行的PHP代码与另一个请求没有任何连接。您需要再次从DB获取数据或在index.php上输出变量,并在执行AJAX请求时将该数据发布到第二个php文件。

答案 1 :(得分:1)

以最基本的方式,加载basicplot.php?x=$x&y=$y传递查询字符串中的数据,然后在basicplot.php中使用$_GET['x']$_GET['y']来获取传递的值。

答案 2 :(得分:1)

尝试通过GET方法将$x$y发送到脚本。并通过$_GET[]将其添加到该脚本中。

答案 3 :(得分:-4)

将变量定义为全局:

global $x, $y;

然后可以在包含文件中访问它们;