这就是我想要的,在一个名为input的PHP页面上.php用户通过html表单提交用户名。这被存储到 MYSQL 数据库中。有一个名为 results.php 的页面在 MYSQL 数据库中查询所有用户名。
我需要发生的是,每隔 5 秒左右,一些 jquery 代码(可能是 getJSON(就会从结果中获取一个 JSON 字符串.php(同一页面(。此 JSON 字符串可能会更新,因为用户可以在输入.php页面上添加更多用户名。
这是输入.php文件
<form name="input" action="<?php $_SERVER['PHP_SELF']?>" method="post">
Usernames: <input type="text" name="usernames" />
<input type="submit" value="Submit" name="submit" />
</form>
<?php
if(isset($_POST['submit'])) {
$link = mysql_connect('', '', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('', $link);
if (!$db_selected) {
die ('Can''t use : ' . mysql_error());
}
$result = mysql_query("INSERT INTO users(user_name) VALUES('".$_POST['usernames']."')");
if (!$result) {
die('Invalid query: ' . mysql_error());
}
}
?>
这是结果.php文件
<script
type="text/javascript" src="jquery-1.7.1.min.js"></script>
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
die ('Can''t use test : ' . mysql_error());
}
$result = mysql_query("SELECT user_name FROM users");
if (!$result) {
die('Invalid query: ' . mysql_error());
}
$names = array();
while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $key => $val) {
$names[][$key] = $val;
}
}
echo json_encode($names);
?>
<script type="text/javascript">
$.getJSON("http://localhost/test/results.php", function(json){
alert("JSON Data: " + json);
});
</script>
<div></div>
我被困在要放置什么jquery上,或者即使我做得正确。最终结果就像Gmail一样,您无需刷新页面即可接收电子邮件。但是我的系统会每 5 秒从数据库中检索一次用户名,而无需刷新页面。我已经阅读了有关getJSON方法的信息,并且我完全不了解它,因此我可能需要一些非常深入的解释。如果我以错误的方式实现这一目标,请告诉我并告诉我如何实现这一目标的良好做法。
我在浏览器中尝试使用此 url,除了 php 代码中回显的 JSON 字符串外,没有任何结果。
这是我的 JSON 字符串
[{"user_name":"马特"},{"user_name":"马特"},{"user_name":"彼得"},{"user_name":"吉姆"},{"user_name":"山姆"}]
你正在寻找的叫做AJAX,你需要javascript来完善它。 如果你想要一个时尚和简单的方法,我会推荐jQuery.你的代码看起来像这样:
setTimeout(function(){
$.post("results.php",function(result){
//Do somthing with the result Array or object
},"json");
},5000);
此外,由于您只获取 1 条数据"用户名",因此您应该返回数组 JSON 而不是对象 JSON
["matt","matt","peter","jim","sam"]
对于您和您的用户来说,它应该需要更少的带宽。
注意:您应该从结果中删除 jquery 脚本.php,唯一应该重新调整的是 JSON 本身。 如果有任何疑问,请询问
如果你想使用结果.php做这两件事(即显示用户名以及响应JSON查询(,那么你需要将文件拆分为两个分支。使用 _GET 变量指定哪个分支。例如,您将对 results.php?json=true 运行 .getJSON,而不仅仅是 results.php。现在在结果中.php有一个 if 分支来检查这个 _GET 变量是否存在,如果是,则获取您需要的数据,在 json 编码的字符串中回显它,然后 exit((。在结果中执行所有这些操作之前.php,甚至在 <script>
标签之前。
编辑以提供代码:(根据OP的问题编辑(
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
die ('Can''t use test : ' . mysql_error());
}
$result = mysql_query("SELECT user_name FROM users");
if (!$result) {
die('Invalid query: ' . mysql_error());
}
$names = array();
while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $key => $val) {
$names[][$key] = $val;
}
}
if (isset($_GET['json'])) {
echo json_encode($names);
exit();
}
?>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$.getJSON("http://localhost/test/results.php?json=true", function(json){
alert("JSON Data: " + json);
});
</script>
<div></div>
setTimeout。
setTimeout( function() {
getData()
}, 5000);
function getData() {
$.getJSON("http://localhost/test/results.php", function(json){
alert("JSON Data: " + json);
});
});
}