2013-01-19 29 views
0

我使用wordpress作爲我的CMS,我devloping投票系統。我想這個代碼僅在點擊事件上運行,但它運行在每個頁面加載Php腳本錯誤與點擊事件

我怎麼能只讓上點擊運行,即使

<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> 
+0

你想'addvote()'運行每次點擊或'hello()'函數嗎? 'hello()'函數將在每個頁面請求上運行 –

+0

我只希望它在單擊事件上運行 –

+0

需要解釋您希望代碼執行的操作...詳細信息以及所需的行爲。 php和javascript在完全不同的環境中運行 – charlietfl

回答

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函數,然後可用於執行某些操作,例如向頁面添加其他內容。

+0

我可以放在我的主題functions.php 我的意思是功能你好 把它放在主題funcions.php 將使它在我的網站gloabal acces –

+0

我沒有WordPress的經驗,所以對不起 - 我不知道。 –

+0

返回值0 使用url那裏$ .get(「wp-content/themes/9GAG/hello.php」 –

0

當你請求這個頁面PHP解析器將hello()功能遇到的,它會運行它,因此它會打印在JavaScript alert()功能hello()函數的返回值,所以輸出時便會,(假設返回值是1):

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

爲@致命吉他提到你需要調用hello()功能與AJAX請求。