【发布时间】:2010-07-05 05:48:22
【问题描述】:
我不是 javascript wiz,但我有点困惑这在三个主要浏览器中是如何工作的,但不是 Safari……这段代码有什么问题吗?基本上我只是将它与给定 url 处的 php/mysql 回调结合使用来跟踪链接点击。
Drupal.behaviors.NodeDownloadCounter = function() {
$('a.ndc-link').click(function() {
$.post('http://www.pixeledmemories.com/node-download-counter/log/' + this.name);
return true;
});
};
在这里使用 Drupal 行为而不是
$(document).ready(function() {
(正确的 Drupal 方法)但我已经尝试了两种方法,但没有任何区别。
我也试过删除“return true”,但没有效果。
好的,进一步的测试表明,让点击触发警报在 Safari 中确实有效:
$('a.ndc-link').click(function() {
alert('testing (ignore)');
$.post('http://www.pixeledmemories.com/node-download-counter/log/' + this.name);
return true;
});
但仍然没有任何内容记录到 mysql。这是我的回调函数:
function node_download_counter_log($nid)
{
global $user;
$timestamp = time();
$title = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $nid));
db_query("INSERT INTO {node_download_counter} (nid, title, download_count, last_download, last_uid) VALUES (%d, '%s', %d, %d, %d)
ON DUPLICATE KEY UPDATE download_count=download_count+1, last_download = %d, last_uid = %d", $nid, $title, 1, $timestamp, $user->uid, $timestamp, $user->uid);
db_query("INSERT INTO {node_download_counter_log} (nid, title, uid, timestamp) VALUES (%d, '%s', %d, %d)", $nid, $title, $user->uid, $timestamp);
}
【问题讨论】:
-
你为什么要
return true?只是好奇.. -
问得好 Reigel...就像我说的,我不是 javascript 向导...我从一个教程中获取了这个基本代码,该教程最后有“return true”...在没必要?
-
我会检查错误控制台,因为 safari 会在一个不错的链接中显示从服务器返回的响应,您可以单击该链接然后查看返回的内容。所以尝试从 ajax 调用中返回一个值,看看你是否得到了你期望的响应。
-
抱歉,我缺乏专业知识 spinon...您能否详细说明如何执行您的建议?非常感谢您的帮助!
-
你能删除
return true;...我认为不应该在那里...只有return false;主要使用...如果你希望你的页面不跳转到其他页面单击该锚点时...
标签: javascript jquery ajax drupal safari