使用AJAX请求检索信息

时间:2017-01-25 03:29:03

标签: javascript jquery html ajax

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

3 个答案:

答案 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;