我正在尝试递增一个数字并更新数据库,然后在不刷新页面的情况下显示该数字。我只是想知道,有没有办法使用 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/