Javascript 使用AJAX请求检索信息

Javascript 使用AJAX请求检索信息,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个数据库,其中有一列名为“财富”。我有一些代码可以访问数据库,并找到与登录到该网站的用户相关的财富。它将值存储在$result中。这是: <!DOCTYPE html> <html> <body> <?php $username = strval($_GET['userName']); $con = mysqli_connect('localhost','id550644_uselessbutton','PRIVATE','id550644_us

我有一个数据库,其中有一列名为“财富”。我有一些代码可以访问数据库,并找到与登录到该网站的用户相关的财富。它将值存储在$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>
当前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>


JavaScript无法访问PHP变量,因为JavaScript是客户端(并且只能针对DOM),而PHP是服务器端。为了使用JavaScript将PHP变量作为目标,必须使用HTML作为中介。我建议使用PHP创建一个包含变量的DOM元素,然后使用JavaScript将其作为目标

在本例中,您似乎试图以
$wealth
为目标,因此您应该添加一个唯一标识:

echo "<p id='wealth'>";
echo $wealth;
echo "</p>";
如果您想将
$result
本身作为目标,则还需要物理输出其内容。请记住,如果您想通过JavaScript更新
$result
,则需要将数据发回后端,最有可能是使用AJAX:)

编辑

要在多个页面上访问JavaScript变量,有两种方法:

1) 在每个页面上的一个(可能隐藏的)DOM元素中输出目标变量,并使用上述脚本在每个页面上以该ID为目标

2) 在PHP脚本中输出目标变量,然后使用AJAX加载PHP脚本,如下所示:

PHP页面:

<?php
  echo $wealth;
?>
在这里的AJAX帖子中,
data
是成功调用PHP脚本时返回的内容。本质上,如果您要访问浏览器中的PHP文件,那么它就是输出的所有内容。假设您在PHP页面上回显wealth变量,并且仅回显wealth变量,这就是要传递的内容,因此JavaScript变量wealth将与PHP变量的值相同

方法1要求您在每个页面上都有相当数量的PHP,您希望能够从中访问JavaScript变量,但速度稍快,因为它不需要进行外部调用

方法2(使用AJAX)更整洁,易于扩展以检索多个变量,如果您想更新PHP变量,还允许您轻松地将数据发布到服务器。请注意,此方法需要jQuery,并且您必须为要在其上输出
wealth
变量的每个页面运行上述脚本

要使用方法2检索多个值,您可以从PHP脚本中创建一个数组或JSON输出,并按如下方式访问它们:

PHP输出:

[wealth, value2]
JavaScript:

var wealth = document.getElementById('wealth').innerHTML;
var wealth, value2;
$.ajax({
  type: "GET",
  url: 'yourphpscript.php',
  success: function (data) {
    wealth = data[0];
    value2 = data[1];
  }
}); 

希望这有帮助!:)

您可以发出ajax请求

   $.ajax({
       'type': "GET",
       'url': <filename which has php code>,
       'success': function (data) {
           document.getElementById('<wherever you want to show results>').innerHTML = data;
        }
   });
$.ajax({
'类型':“获取”,
“url”:,
“成功”:函数(数据){
document.getElementById(“”).innerHTML=数据;
}
});
更新:您可以使用类似的 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>
//将jQuery版本文件包括在
var财富;
$.ajax({
'类型':“获取”,
“url”:“getScore.php”,
“成功”:函数(数据){
财富=数据;
}
});
控制台日志(财富)//这将有PHP变量返回的值

AJAX调用是异步调用,因此您需要将async标志设置为false,以便它在将x分配给clicks之前等待数据到来并分配给x

$.ajax({
   'type': "GET",
   'url': "getScore.php",
   **async: false,**
   'success': function (data) {
       var x = data;
    }
 });

var clicks = x;

使用var wealth=document.getElementById('wealth').innerHTML;在本文档中,风险值只会在本文档中产生财富,不是吗?我将无法从其他文档访问它。我错了吗?在某种程度上是正确的——JavaScript变量对于创建它们的页面都是唯一的。当然,您可以做的是在外部
.js
文件中创建JavaScript变量,并将该文件包含在每个页面的PHP头文件中。然后该JavaScript变量在每个页面上都有作用域:)只要确保在加载外部JavaScript文件后引用该变量;)有趣的你看过Riya在下面建议的其他方法吗?虽然还没有实现,但似乎很简单……我刚刚更新了这个答案,希望能对AJAX方法的工作原理以及如何扩展提供一个清晰的解释——请参阅我答案的
编辑
部分:)为了保持简单,请观看此视频并根据您的需要进行修改。对不起,“数据”是什么?数据是php文件返回的任何值。如果php打印出字符串“OK”,那么这个数据变量将包含字符串“OK”。任何打印/回显的输出都将返回到success函数。那么,如何让这个AJAX请求以$wealth PHP变量为目标呢?如何使javascript中指定的变量等于此ajax请求的输出ID?谢谢。在php文件中,添加echo$wealth。在编写AJAX请求的另一个文件中,请确保在“success”函数中包含jQuery和var x=data;其中x是变量名。作为参考,
.ajax()
请求的参数周围不应有单引号。例如,
'type':“GET”,
应该是
type:“GET”,
——也许这就是您出错的原因?:)虽然这是事实,但我个人不建议强制ajax调用是同步的。
// 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>
$.ajax({
   'type': "GET",
   'url': "getScore.php",
   **async: false,**
   'success': function (data) {
       var x = data;
    }
 });

var clicks = x;