0
<script>
jQuery(document).ready(function() {
    jQuery('.visit-website-link a').bind('click', function(e) {

    <?php 
    $visit_count = db_insert('visit_count') 
    ->fields(array(
    'nid' => $nid,
    'uid' => $user->uid,
    ))
    ->execute();
    ?>

    });
});
</script>

我已经在 drupal tpl 中编写了这段代码。但是当我访问该页面时,查询会执行而无需单击要访问的链接。

任何人都可以帮助我吗?找出解决方案。

4

2 回答 2

0

它是你的php codephp script is a server side script所以它不会看到你写的,javascript click event所以它会executed automatically

为此,您可以使用它ajax来完成此任务。

于 2013-05-07T05:36:19.300 回答
0

当然,因为 PHP 代码在浏览器查看 JavaScript 之前就已经运行了。您需要的是一个单独的页面,其中包含您的 PHP 代码,然后通过 AJAX 调用它,如下所示。注意:我从您的 PHP 数组中删除了一个尾随逗号。您甚至可以从您的 PHP 中返回一些内容以显示在成功函数中。

PHP(查询.php):

<?php 

$visit_count = db_insert('visit_count')
->fields(array(
    'nid' => $nid,
    'uid' => $user->uid
))
->execute();

?>

HTML/JavaScript:

<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery('.visit-website-link a').bind('click', function(e) {
            e.preventDefault();
            $.ajax(
            {
                url: "query.php",
                type: "POST",
                success: function()
                {
                    console.log('Update complete');
                }
            });
        });
    });
</script>
于 2013-05-07T05:36:41.900 回答