点击事件的PHP脚本错误

时间:2013-01-19 20:34:06

标签: php jquery wordpress

我使用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>

2 个答案:

答案 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()函数。