0

我正在使用 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>
4

2 回答 2

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 函数,然后可以用来做一些事情,比如向页面添加额外的内容。

于 2013-01-19T20:42:42.810 回答
0

当您请求此页面时,PHP 解析器将遇到hello()函数,它将运行它,因此它将hello()在 javascriptalert()函数中打印函数的返回值,因此输出将是,(假设返回值为 1):

<script>
    alert('1');
</script>

正如@lethal-guitar 提到的,您需要hello()使用 AJAX 请求调用该函数。

于 2013-01-19T20:50:00.873 回答