使用PHP代码在JavaScript中自动更新

时间:2013-07-15 19:46:59

标签: php javascript

我正在尝试使用JavaScript和php代码在我的页面上进行自动更新以从服务器读取数据

    <html>
<head>
<script type="text/javascript">
function timeMsg()
{
var myVar=setInterval(function(){myTimer()},5000);
}
function myTimer()
{
document.write("<?php 
                session_start();
                $userdata = $_SESSION['views'];
                $name =  $userdata[1]; 
                $mysql_host = 'localhost';
                    $mysql_user = 'root';
                    $connection = mysql_connect($mysql_host,$mysql_user);
                    mysql_select_db("twitter2", $connection);
                    $query = "SELECT * FROM `logindata`";
                    $result =mysql_query($query) or die(mysql_error());
                            while($row = mysql_fetch_array($result))
                    {
                    echo $row['loginname'];
                    }
                        echo "<br>";echo "<br>";
?>");
}
</script>
</head>
<body>
<form>
<input type="button" value="Display alert box in 3 seconds"
onclick="timeMsg()" />
</form>
</body>
</html>

此代码工作正常,但只显示数据库中第一次找到的内容 但如果我在数据库中添加更多行,则新的行不会出现在页面上。

谢谢大家  我改变了一些代码,就像这样

        <html>
<head>
<script type="text/javascript">
function timeMsg()
{
var myVar=setInterval(function(){myTimer()},1000);
}
function myTimer()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
   document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","phptest.php",true);
xmlhttp.send();
}
</script>

</head>
<body>
<form>
<input type="button" value="Display alert box in 3 seconds"
onclick="timeMsg()" />
<div id="txtHint"></div></p>
</form>
</body>
</html>

和php文件

<?php 

                $mysql_host = 'localhost';
                    $mysql_user = 'root';
                    $connection = mysql_connect($mysql_host,$mysql_user);
                    mysql_select_db("twitter2", $connection);
                    $query = "SELECT * FROM `logindata`";
                    $result =mysql_query($query) or die(mysql_error());
                            while($row = mysql_fetch_array($result))
                    {
                    echo $row['loginname'];
                    }

?>

它对我来说很好。谢谢你的帮助

4 个答案:

答案 0 :(得分:1)

你做错了 - 你的JavaScript函数的内容在服务器上被解释并且总是相同的。您的JavaScript函数必须向服务器发送请求并处理响应。

如果您使用JQuery,这可能看起来像这样

$.get('ajax/script.php', function(data) {
  $('.result').html(data);
});

并在script.php中,您可以输出数据库结果

答案 1 :(得分:0)

javascript是一种客户端语言。 你不能用javascript打印出一些php,因为它发生在客户端浏览器中。

您需要在服务器上执行此操作,因此我认为您需要的是服务器端php脚本的ajax请求(XMLHttpRequest),它看起来像document.write的内容。

一个非常简单和漂亮的跨浏览器方式是使用jquery.ajax。 http://api.jquery.com/jQuery.ajax/

简单教程: http://viralpatel.net/blogs/jquery-ajax-tutorial-example-ajax-jquery-development/

答案 2 :(得分:0)

使用Ajax组合客户端和服务器端语言!

答案 3 :(得分:0)

史蒂文是对的,这就是我对jquery的处理方式:

在javascript中:

function myTimer()
{
$.ajax({
    url:'path/to/your-script.php',
    type:"POST",
    data:"ajax=true",
    success:callBackMyTimer
});
}

function callBackMyTimer(data)
{
alert(data);
}

在你的-script.php

<?php
if(isset($_POST['ajax']) && $_POST['ajax'] == 'true')
{
    session_start();
    $userdata = $_SESSION['views'];
    $name =  $userdata[1]; 
    $mysql_host = 'localhost';
    $mysql_user = 'root';
    $connection = mysql_connect($mysql_host,$mysql_user);
    mysql_select_db("twitter2", $connection);
    $query = "SELECT * FROM `logindata`";
    $result =mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result))
    {
        echo $row['loginname'];
    }
    echo "<br>";echo "<br>";
}
exit;
?>