我使用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>
你不能像这样从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函数完成后被传输回JavaScript函数,然后可以用来做一些事情,比如向页面添加额外的内容。
当您请求此页面时,PHP解析器将遇到hello()
函数,它将运行它,因此它将在javascript alert()
函数中打印hello()
函数的返回值,因此输出将是,(假设返回值为1):
<script>
alert('1');
</script>
正如@lethal-guitar提到的,您需要使用AJAX请求调用hello()
函数。