使用javascript访问php变量

时间:2014-09-13 12:29:15

标签: javascript php html mysql

我已经创建了一个网页,在ubuntu服务器上设置了appache2,这样我就可以通过互联网查看这个页面了。我已经安装了php5和MySQL,并希望在我创建的网页上访问数据库中的信息。

现在,我有一个文件 test.php ,它访问数据库并将一些信息放入变量中。我使用javascript编写了一些内容,只需点击一下按钮即可更改网页内容。

现在,只要按下按钮,网页就会崩溃,因为它表示变量是未定义的或空引用。很公平,但我的问题是如何通过网页访问.php文件中的变量?如果我将脚本写入页面,浏览器是否可以使用.php文件中的信息?

有人告诉我,php文件会被自动解析。我猜服务器端正在访问此页面,但我可以通过Web浏览器使用它。

编辑:     

//check connection
if (mysqli_connect_errno()){
   echo "failed to connect to MySQL: " . mysqli_connect_error();
   }
$grab = mysqli_query($con, "SELECT * FROM table");
$row = mysqli_fetch_array($grab);
$name = $row["name"];
$color = $row["color"];
$price = $row["price"];
$n1 = $name[0];
$c1 = $color[0];
$p1 = $price[0];

?>

好的,所以我将php文件更改为此,所以现在所做的只是定义变量。我安装了几个MySQL mod并且现在没有问题。

下一期是如何在javascript中使用php变量

function load(){
   var xmlhttp = new XMLHttpRequest();
   xmlhttp.open("GET", "test.php", true);
   xmlhttp.send();
   xmlhttp.onreadystatecahnge = function(){
      if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
         document.getElementById("itemNameLink1").innerHTML = "<?php echo $n1;?>;
         }
      }
   }

所以onload这个ajax函数应该运行并将itemNameLink1更改为php变量$ n1,只有它没有,我只得到一个空字符串。一切都应该正确设置,但使用php变量似乎是不可能的。使用jquery get命令会更容易吗,我猜测除非我解决这个问题,否则我会挣扎。

我也假设了一些事情,我已经检查了错误日志并且php文件处于活动状态,假设我连接正确它应该访问数据库。我很新,所以我不知道如何测试。

我还假设当php文件位于服务器网页文件目录中时。它会自动运行。再次设置服务器非常新,所以使用ubuntu服务器并熟悉我需要使用的所有命令或者apache2如何操作对我来说很难。

1 个答案:

答案 0 :(得分:0)

PHP在服务器上执行,您的客户端以纯文本/ html文档的形式接收结果。 您的浏览器在收到普通文档时会运行javascript,因此您无法使用javascript直接访问PHP变量。 但是,您可以在服务器上生成页面时设置javascript变量,如此

<?php $myPhpVar = 'Hello World'; ?>
<script>
  //This line would result in  var test = "Hello World";  when send to client
  var test = "<?=$myPhpVar?>"; 
  alert(test);
</script>

此外,您可以使用javascript对服务器执行请求(因此您可以从test2.php中读取结果作为示例,并在页面的某处使用它)。 http://en.wikipedia.org/wiki/Ajax_(programming)

纯javascript:http://en.wikipedia.org/wiki/XMLHttpRequest

var request = new XMLHttpRequest();
request.onreadystatechange = function () {
    var DONE = this.DONE || 4;
    if (this.readyState === DONE){
        alert(this.readyState);
    }
};
var action = 'doSomethingOnServer';
request.open('GET', 'test2.php?action=' + action, true); 
request.send(null);

Jquery:http://api.jquery.com/jquery.ajax/

<script>
var action = 'doSomethingOnServer';
$.ajax({
  url: "test2.php?action=" + action,
}).done(function(result) {
  alert(result);
});
<script>

如果您的php在您的服务器上工作,请测试创建一个文件info.php(或其他东西)。并将其添加到文件

<?php phpinfo(); ?>

如果您访问该页面,您应该会获得一个包含有关您的php配置的大量信息的页面。 我不确定你是如何安装你的php的,但在开发机器上你可以改变你的php.ini中的一些东西,让生活更轻松

display_startup_errors = 1
display_errors = 1
error_reporting = E_ALL

更改php.ini时请参阅http://php.net/manual/en/errorfunc.configuration.php#ini.error-reporting,不要忘记重新启动apache

JSON示例:

data.php

<?php
    $db_result = array(array('name' => 'record1'), array('name' => 'record2'));
    echo json_encode($db_result);
?>

的index.php

<script>
$.ajax({url: 'data.php', dataType: 'json'}).done(function(result) { 
  //result = an object from your database (in this case an array with objects with the property name)
  alert(result);  
  alert(result[0].name);
}
</script>