我使用wordpress作为我的cms,我正在开发一个投票系统。我希望此代码仅在单击事件上运行,但它会在每个页面加载
上运行我怎样才能让它在点击甚至
上运行<script>
function addvote(){
alert("<?PHP hello(); ?>");
}
< /script>
<?PHP
FUNCTION hello(){
$postid="79";
$current_votes = get_post_meta($postid, "votes", true);
$new_votes = intval($current_votes) - 1;
update_post_meta($postid, "votes", $new_votes);
$return = $new_votes>1 ? $new_votes." votes" : $new_votes." vote";
echo $return;
}
?>
<button onclick="addvote()">Vote Now</button>
答案 0 :(得分:3)
您无法像这样从JavaScript调用PHP。你需要AJAX:http://en.wikipedia.org/wiki/Ajax
此外,使用不引人注目的JavaScript - 在脚本代码中附加事件处理程序,而不是在HTML中。基本示例如何使用jQuery实现您可能想要的东西:
// In your HTML page:
<scipt type="text/javascript">
$(document).ready(function() {
$('button').click(function() {
$.get("/hello.php", function(data) {
alert(data);
});
});
});
</script>
// In hello.php:
<?php
function hello() {
// ...
echo $return;
}
hello();
?>
您需要了解服务器端和客户端处理之间的区别。所有PHP代码都在每个页面请求的服务器上执行。然后将结果发送到您的浏览器,显示它们。现在页面中可以有JavaScript代码,在页面加载后由浏览器执行。为了在按钮单击(或类似)上调用PHP代码,此客户端代码需要向服务器发出新的HTTP请求 - 这就是AJAX的用途。这个新请求将触发另一个PHP脚本的执行。完成后,结果将传输回JavaScript函数,然后可用于执行某些操作,例如向页面添加其他内容。
答案 1 :(得分:0)
当您请求此页面时,PHP解析器将遇到hello()
函数,它将运行它,因此它将在javascript hello()
函数中打印alert()
函数的返回值,所以输出将是,(假设返回值为1):
<script>
alert('1');
</script>
正如@ lethal-guitar所说,你需要用AJAX请求调用hello()
函数。