【问题标题】:click events executes without clicking in jquery drupal单击事件执行而不单击 jquery drupal
【发布时间】:2013-05-07 05:28:10
【问题描述】:
<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 中编写了这段代码。但是当我访问该页面时,查询会执行而无需单击要访问的链接。
谁能帮助我?找出解决方案。
【问题讨论】:
标签:
javascript
jquery
drupal
drupal-7
drupal-views
【解决方案1】:
这是你的php code 和php script is a server side script,所以它不会看到你在javascript click event 写的,所以它会executed automatically
为此您可以使用ajax 来完成此任务。
【解决方案2】:
当然,因为 PHP 代码在浏览器查看 JavaScript 之前就已经运行了。您需要的是一个单独的页面,其中包含您的 PHP 代码,然后通过 AJAX 调用它,如下所示。注意:我从您的 PHP 数组中删除了一个尾随逗号。您甚至可以从 PHP 中返回一些内容以显示在成功函数中。
PHP (query.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>