我想记录在页面上特定DIV
和子DIVS
内发生的每次点击。客户不应该意识到这一点。 div
内部是指向外部网站的链接。
客户点击div
>内的链接ajax在db>中插入记录客户端被发送到点击链接的网站
页面上的PHP
include('quotemaster/dbmodel.inc.php');
if(isset($_POST['dataString'])) {
clickCounter();
}
PHP模型函数
function clickCounter() {
global $host, $user, $pass, $dbname;
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
$stmt = $DBH->prepare("INSERT INTO clickcounter (counter) VALUES (1)");
$stmt->execute();
}
catch (PDOException $e) {
echo $e->getMessage();
}
}
AJAX POST
$(function() {
$("body").click(function(e) {
if (e.target.id == "results" || $(e.target).parents("#results").size()) {
//alert("Inside div");
ajax_post();
}
});
})
function ajax_post() {
var dataString = 'CC='+1;
$.ajax({ type: "POST", url: "tq/--record-events.inc.php", data: dataString });
}
我遇到的问题(我认为)是AJAX
帖子没有被发送。有任何想法吗?谢谢!
答案 0 :(得分:0)
你的PHP
if(isset($_POST['dataString'])) {...
你期待一个名为dataString的参数,所以你可以用你的javascript ajax_post函数修复它
var postData={dataString:true, CC:1}
$.ajax({ type: "POST", url: "tq/--record-events.inc.php", data: postData });
这样jQuery将创建正确的dataString参数。 希望这有帮助
答案 1 :(得分:0)
尝试将POST
检查更改为:
if(isset($_POST['CC'])) {
clickCounter();
}
此外,如果您的DIV
包含导航离开该页面的链接,则单击该链接可能会导致页面位置在事件冒泡到主体标记之前发生更改。如果是这样,您可以尝试将事件附加到调用preventDefault
的链接,从而允许事件冒泡。如果是这样,您可以检测到用户单击链接并在记录单击后手动执行导航。要显示如何实现这一目标的代码,您需要发布完整的div代码(包括链接)。
要向ajax调用添加回调:
function ajax_post() {
var dataString = 'CC='+1;
$.ajax({
type: "POST",
url: "tq/--record-events.inc.php",
data: dataString,
success: function(data) {
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(errorThrown);
}
});
}