Php脚本错误与点击事件


Php script error with on click event

我使用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()函数。