使用AJAX检查数据库更新并通知

时间:2012-09-21 18:57:34

标签: ajax database notifications

我需要一个 ajax 脚本来确定数据库中是否有条目数据并在页面上显示每个条目的通知我希望向每个查看该页面的用户显示通知。

我尝试了以下操作,但它没有提供所需的输出:

main.html中

<html>
<head>
  <script type='text/javascript' src='ajx.js'></script>
</head>
</html>

pop.php

<?php
try{
    $con=mysql_connect("localhost:3306", "root", "") or die(mysql_error()) ;  
    $q = mysql_query("SELECT `user`.`name`,`user`.`page` FROM `people`.`user` ORDER BY `user`.`index` DESC",$con);

    if(!$q)
    {
    throw new Exception('Uncaught Exception occurred');
     }
}
catch(Exception $e)
{
Echo "";
}

$results = mysql_fetch_assoc($q);


echo json_encode($results);
?>

ajx.js

$.ajax({
url: "pop.php",
dataType: "json",
success: function(json){
    var dataArray = JSON.decode(json);
    dataArray.each(function(entry){
        alert(entry.name);
    }
}
});

当我加载main.html 时,我没有得到结果。我认为需要一些声明来打印结果。

2 个答案:

答案 0 :(得分:1)

该脚本的哪个特定方面您想要书面澄清?你对可能遇到问题的地方有什么具体问题吗?

您可以使用以下内容:

PHP文件:(get_notifications.php)

$q = /*your query to database*/
$query = mysql_query($q, $dbConnect);
$results = mysql_fetch_assoc($query);
echo json_encode($results);

Javascript文件:

$.ajax({
    url: "get_notifications.php",
    dataType: "json",
    success: function(json){
        var dataArray = JSON.decode(json);
        dataArray.each(function(entry){
            alert(entry.valueName);
        }
    }
});

在javascript文件中,“valueName”指的是您要输出的数据键。例如,如果您“SELECT FROM people”,并且您想要输出它们的名称,那么它将是entry.name。您还可以使用附加内容替换警报或将数据放入div或页面上。

如果您需要进一步澄清这些部分,请与我们联系。这应该能够给你一个很好的开始。希望它有所帮助。

<强>澄清: 您的页面加载的文件应该只包含您的布局和HTML以及包含您的js的脚本标记。

然后你的用于ajax调用的php应该在一个由Ajax调用的单独文件中,不包含在正在加载的页面中。希望这是有道理的。

答案 1 :(得分:1)

我查看了你的代码并进行了一些修改。这是我在我的系统上使用的确切代码,其中包含我使用的测试数据库:(您需要将其调整到您的系统环境中)

<强> main.html中:

<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type='text/javascript' src='ajx.js'></script>
</head>
<body>
    Your body content in here...
</body>
</html>

<强> pop.php:

<?php
include __DIR__.'/include/Configurations.php';
include __DIR__.'/include/DatabaseConnect.php';

global $databaseConnection;

try{
    $q = mysql_query("SELECT name, page FROM users", $databaseConnection);

    if(!$q)
    {
    throw new Exception('Uncaught Exception occurred');
    }
}
catch(Exception $e)
{
Echo "";
}

$results = Array();
$i = 0;

while ($row = mysql_fetch_assoc($q))
{
    $results[$i] = $row;
    $i++;
}

echo json_encode($results);
?>

<强> ajx.js:

$(document).ready(function(){
    $.ajax({
        url: "pop.php",
        dataType: "json",
        success: function(json){
            var i;
            for(i=0; i<json.length; i++)
            {
                alert(json[i].name);
            }
        }
    });
});

当您将其集成到实际项目中时,您可以使用您想要的任何逻辑和输出方法替换alert()函数,以便在页面上正确获取内容。让我知道这对你有什么影响,或者我还能提供什么帮助。