0

私は自分の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>

hello()@ lethal-guitarが述べたように、AJAXリクエストで関数を呼び出す必要があります。

于 2013-01-19T20:50:00.873 に答える