我使用的代码如下:
<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函数每次调用时都从数据库中获取数据?
答案 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>';
}
?>