我已经创建了一个网页,在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如何操作对我来说很难。
答案 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>