저는 3 개의 주요 브라우저에서 작동하는 방법에 대해 의아해하지만 약간의 의문점이 있습니다. 이 코드에 문제가 있습니까? 기본적으로 나는 링크 클릭을 추적하기 위해 주어진 url에서 php/mysql 콜백과 함께 이것을 사용하고있다.jQuery ajax 함수가 Safari (Firefox, Chrome, IE okay)에서 작동하지 않습니다.
Drupal.behaviors.NodeDownloadCounter = function() {
$('a.ndc-link').click(function() {
$.post('http://www.pixeledmemories.com/node-download-counter/log/' + this.name);
return true;
});
};
대신
$(document).ready(function() {
(올바른 드루팔 방법)의 여기 드루팔 동작을 사용
그러나 나는 그것을 두 가지를 시도하고 그 차이를 만들지 않습니다.
"return true"는 제거했지만 아무런 효과가 없습니다.
$('a.ndc-link').click(function() {
alert('testing (ignore)');
$.post('http://www.pixeledmemories.com/node-download-counter/log/' + this.name);
return true;
});
하지만 여전히 아무것도 MySQL의에 기록되고 있지 :
좋아, 추가 시험은 경고 Safari에서 작업을 수행하는 클릭 트리거를 갖는 것을 알 수있다. 다음은 콜백 함수입니다.
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);
}
왜 'true true'를 반환해야합니까? 그냥 호기심 .. – Reigel
좋은 질문 Reigel ... 내가 말했듯이, 나는 자바 스크립트 wiz 아니에요 ... 나는 "반환 진정한"튜토리얼 에서이 기본 코드를 가져 갔는데 ... 필요하지 않습니다? –
사파리가 좋은 링크에있는 서버에서 응답을 보여주기 때문에 오류 콘솔을 확인하고 클릭 한 다음 되돌아온 것을 볼 수 있습니다.따라서 Ajax 호출에서 값을 반환하고 예상 한 응답을 얻고 있는지 확인하십시오. – spinon