javascript - PHP、JavaScript 和 MySQL : updating and passing of variables

标签 javascript mysql variables updates

我正在尝试递增一个数字并更新数据库,然后在不刷新页面的情况下显示该数字。我只是想知道,有没有办法使用 JavaScript 读取/更新 MySQL?

我试着四处搜索,看来您必须调用另一个程序来为您更改值。现在我有

<?php
require ("connect.php");

echo "connected!<br>";

$extract = mysql_query("SELECT * FROM articles")or die ("Not working");

//$numrows = mysql_num_row($extract);

while ($row = mysql_fetch_assoc($extract)) {

    $id = $row['id'];
    $article = $row['article'];
    $thumbsup= $row['thumbs_up'];
    $thumbsdown = $row['thumbs_down'];
    $date = $row['date_time'];
    $username = $row['username'];
    mysql_query("UPDATE articles SET thumbsup = 1");
}
?>

所以我想知道,一旦此页面更新了数据库,您如何将更新后的值获取到 JavaScript 函数中?现在我只是从文件中读取它

xmlhttp.open("GET", "http://localhost/ajax/folder5/includes/a.txt", true);

非常感谢您的帮助!

最佳答案

因为您已经有一个服务器端脚本来获取数据,您需要做的就是将其作为对 XMLHttpRequest 的响应返回并使用 callback 处理它功能。假设你想返回 $id, $article, $thumbsup ..etc 你可以把它放在一个数组中并对其进行编码,按照建议你可以使用 json_encode() .在您的 PHP 脚本中,您可以执行以下操作:

$Response = array(
     'Id' => $id,
     'Article' => $article',
     'ThumbsUp' => $thumbsup
)

echo json_encode($Response);
exit;

并且在您的 Javascript 中,您可能需要添加一个响应处理程序,例如:

xmlHttp.onreadystatechange = function() {

 if (syndLinkRequest.readyState != 4)
    return;

  var result = xmlHttp.responseText;

  /* if you've returned javascript instead of xml or text, 
    you can eval(result) to access the javascript variables returned.
  */

  // do your thing
  }

当然,您需要更改请求数据的方式,而不是使用 GET 到文本文件,在这种情况下,您可能希望直接向 PHP 脚本请求并返回结果:

xmlhttp.open("GET", "/ajax/update.php", true); // this will return the response

基本上,这就是您所需要的。 有关更简短的示例,您可以引用 here .

还要检查 jQuery 的 ajax 函数,因为它可能对您有很大帮助。

**编辑**

添加了附加信息。 由于我们返回的结果是 JSON(通过使用 json_encode),您需要为内容类型添加一个 header ,将其添加到脚本的最顶部,就在 <?php 下方。部分:

header('Content-type: application/json');

并且基于上面的示例,假设我们将此作为响应:

$Response = array( 'Id' => $id,  'Article' => $article,'ThumbsUp' => $thumbsup);
echo json_encode($Response);
exit;

在您的 callback 中收到此信息后函数这将被翻译成类似的东西(带有示例值):

{"Id":1,"Article":20,"ThumbsUp":30}

这是给结果变量:

var result = xmlHttp.responseText;

为了确保我们得到评估的响应,我们将使用 eval()到结果字符串,以便您可以通过访问属性从中获取值。以此为例:

var result = eval(xmlHttp.responseText);

完成后,您可以从结果变量访问属性,如 result.ThumbsUp这给了你 30基于示例。然后,您可以在任何需要的地方分配该值,例如:document.getElementById('c').innerHTML = result.ThumbsUp;我希望这能让你有一个更清晰的想法。

使用 eval() 的注意事项, 阅读 this .

关于javascript - PHP、JavaScript 和 MySQL : updating and passing of variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602845/

相关文章:

javascript - 如何限制 array.filter 的 10 个结果?

javascript - 如何在 JavaScript 中找到调用函数?

mysql - 获取标签计数以及当前用户是否对该计数做出了贡献

variables - Flex/Lex - 如何知道变量是否已声明

c - 默认情况下,C 中的基本数据类型是可变的还是不可变的?

javascript - 带有图像的单选按钮

javascript - 避免在 React 中只更新一个组件时重新渲染列表中的每个组件

c# - ASP.Net-VB 到 .MDF 连接

mysql - LEFT JOIN 的 WHERE 条件未显示正确的结果

php - 避免在 PHP 中执行部分变量