0

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

非常感谢你的帮助!

4

2 回答 2

3

由于您已经有一个获取数据的服务器端脚本,因此您只需将其作为对您的响应返回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

本质上,这就是你所需要的。有关更简短的示例,您可以参考此处

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

**编辑**

添加了附加信息。由于我们返回的结果是 JSON(通过使用 json_encode),因此您需要为内容类型添加一个标头,将其添加到脚本最顶部的部分下方<?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(),请阅读内容。

于 2011-04-09T05:31:40.807 回答
1

您在使用 XMLHttpRequest 方面走在了正确的轨道上。基本上,您只需制作一个具有所需输出的脚本(而不是获取静态文本文件)。

一个不错的 PHP AJAX 脚本输出选择是 JSON。你可以用json_encode这个。还有其他可能性,包括 XML。

于 2011-04-09T04:23:53.627 回答