我的数据库中有一个名为“财富”的列。我有一些访问数据库的代码,并找到相对于登录到网站的用户的财富。它将值存储在$ result中。这是:
<!DOCTYPE html>
<html>
<body>
<?php
$username = strval($_GET['userName']);
$con = mysqli_connect('localhost','id550644_uselessbutton','PRIVATE','id550644_uselessbutton');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
} else {
$sql="SELECT * FROM users WHERE username = '".$username."'";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) {
$wealth = $row['wealth'];
echo "<p>";
echo $wealth;
echo "</p>";
}
}
mysqli_close($con);
//return $wealth;
?></body>
</html>
我只是不知道如何制作它以便我可以通过javascript从我的主html文档访问$ result的值。我喜欢这个,因为当我触发一个函数时,我希望现有的javascript变量等于$ result。
谢谢!
当前的ajax请求:
$.ajax({
'type': "GET",
'url': "getScore.php",
'success': function (data) {
var x = data;
}
});
var clicks = x;
当前的PHP代码:
<!DOCTYPE html>
<html>
<body>
<?php
$username = strval($_POST['username']);
$wealth = strval($_POST['wealth']);
$con = mysqli_connect('localhost','id550644_uselessbutton','PRIVATE','id550644_uselessbutton');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
} else {
$sql = "UPDATE users SET wealth=".$wealth." WHERE username='".$username."'";
$result = mysqli_query($con,$sql);
}
mysqli_close($con);
?></body>
</html>
答案 0 :(得分:0)
JavaScript 无法访问PHP变量,因为JavaScript是客户端(并且只能定位DOM),而PHP是服务器端。为了使用JavaScript定位PHP变量,您必须使用HTML作为中介。我建议使用PHP创建一个包含变量的DOM元素,然后使用JavaScript定位它。
在这种情况下,您似乎正在尝试定位$wealth
,因此您应该添加唯一标识符:
echo "<p id='wealth'>";
echo $wealth;
echo "</p>";
然后使用JavaScript定位该唯一标识符:
var wealth = document.getElementById('wealth').innerHTML;
如果您想定位$result
本身,您还需要实际输出其内容。请注意,如果您想通过JavaScript 更新 $result
,则需要将数据发回到后端,最有可能使用AJAX:)
修改强>
要在多个页面上访问JavaScript变量,您有两种方法:
1)在每个页面的(可能隐藏的)DOM元素中输出目标变量,并使用上述脚本在每个页面上定位该ID。
2)在PHP脚本中输出目标变量,然后使用AJAX加载PHP脚本:
PHP页面:
<?php
echo $wealth;
?>
输出页面:
var wealth;
$.ajax({
type: "GET",
url: 'yourphpscript.php',
success: function (data) {
wealth = data;
}
});
在这里的AJAX帖子中,data
是成功调用PHP脚本时返回的内容。基本上,如果您要在浏览器中访问PHP文件,那么所有都会被输出。假设您在PHP页面上回显财富变量和仅财富变量,那就是传递的内容,因此,JavaScript变量wealth
将等于与您相同的值PHP变量。
方法1要求您在每个希望能够访问JavaScript变量的页面上拥有相当数量的PHP,但稍微快一点,因为它不需要进行外部调用。
方法2(使用AJAX)更整洁,可以轻松扩展以检索多个变量,并且如果要更新PHP变量,还允许您轻松地 POST 数据到服务器。请注意此方法需要jQuery ,并且您必须为要输出wealth
变量的每个页面运行上面的脚本。
要使用方法2检索多个值,您可以从PHP脚本创建数组或JSON输出,并按如下方式访问它们:
PHP输出:
[wealth, value2]
JavaScript的:
var wealth, value2;
$.ajax({
type: "GET",
url: 'yourphpscript.php',
success: function (data) {
wealth = data[0];
value2 = data[1];
}
});
希望这有帮助! :)
答案 1 :(得分:0)
您可以发出ajax请求。
$.ajax({
'type': "GET",
'url': <filename which has php code>,
'success': function (data) {
document.getElementById('<wherever you want to show results>').innerHTML = data;
}
});
更新:您可以拥有类似的内容 getScore.php中的PHP代码
<?php
//make connection
//query the database
//return result in $wealth
echo $wealth;
?>
您的表单所在的某些HTML文件中的JavaScript代码。
// Include jQuery version file in <head>
<script>
var wealth;
$.ajax({
'type': "GET",
'url': "getScore.php",
'success': function (data) {
wealth = data;
}
});
console.log(wealth); //This will have the value returned by PHP variable
</script>
答案 2 :(得分:-1)
AJAX调用是异步调用,因此您需要将异步标志设置为false,以便在将x分配给点击之前等待数据到达并分配给x。
$.ajax({
'type': "GET",
'url': "getScore.php",
**async: false,**
'success': function (data) {
var x = data;
}
});
var clicks = x;