如何让JS函数每次调用时都从数据库中获取数据?

时间:2011-09-29 05:06:45

标签: php javascript html

我使用的代码如下:

<script>
  function getdata() 
  {
  var  employee = 
    <?php 
//connect to database and get employee name
    echo "'" . $row['empnm'] "'";
    ?>;
  }
</script>
<a href="#" onclick="getdata();">print them</a>

它可以工作,但是该函数仅在页面加载时运行PHP代码,而不是每次调用该函数时。因此,如果更改了目标员工姓名,JS函数将显示旧名称,直到重新加载页面。如何使JS函数每次调用时都从数据库中获取数据?

4 个答案:

答案 0 :(得分:4)

查看像jQuery

这样的库

然后使用以下代码

function getdata(){
  $.post("path/to/file.php", function(data) {
        var employee = data;
        // do whatever with the data.
  });
}

你仍然可以使用相同的HTML

<a href="#" onclick="getdata();">print them</a>

file.php

<?php

// connect to your db, get your results, echo them back
echo $row['empnm'];
 ?>

答案 1 :(得分:2)

当您第一次请求页面时,PHP会呈现整个html字符串,然后您的浏览器会执行生成的HTML,而不是原始的PHP。即您的服务器将发送类似

的内容
<script>
  function getdata() 
  {
  var  employee = 
    "hello world";
  }
</script>
<a href="#" onclick="getdata();">print them</a>

因此,就网络浏览器而言,“hello world”只是硬编码。

您需要了解如何使其工作的AJAX。查看这个关于使用jQuery for ajax的初学者教程:http://www.devirtuoso.com/2009/07/beginners-guide-to-using-ajax-with-jquery/

答案 2 :(得分:0)

定义全局变量

<script>
    var employee = <?php echo "'" . $row['empnm'] "'";?>;
    function getdata(){
        return employee;
    }
</script>

现在,一旦变更员工改变,就继续改变

<a href="#" onclick="getdata();">print them</a>

答案 3 :(得分:0)

如果您处于PHP循环中 - 它看起来像你一样,因为 - 您可以使用PHP来定义要在循环中传递给getdata()的参数; e.g。

<script type="text/javascript">
function getdata(employee) {
    // connect to database and get employee name
}
</script>

<?php
foreach ($loopData as $row) {
    print '<a href="#" onclick="getdata(' . $row['empnm'] . ');">print them</a>';
}
?>