Javascript 每次点击一次,jqueryajax都会发布到PHP

Javascript 每次点击一次,jqueryajax都会发布到PHP,javascript,php,jquery,ajax,pdo,Javascript,Php,Jquery,Ajax,Pdo,我想记录在第页的特定DIV和子DIV中发生的每次单击。客户不应该意识到这一点。div的内部是指向外部网站的链接 客户端在div>中点击链接,ajax在db中插入记录>客户端被发送到点击链接的站点 页面上的PHP include('quotemaster/dbmodel.inc.php'); if(isset($_POST['dataString'])) { clickCounter(); } PHP模型函数 function clickCounter() { global $

我想记录在第页的特定
DIV
和子
DIV
中发生的每次单击。客户不应该意识到这一点。
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();
        }

}
ajaxpost

$(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
post没有被发送。有什么想法吗?谢谢

在您的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参数。
希望这有帮助

尝试将
POST
检查更改为:

if(isset($_POST['CC'])) {
    clickCounter();
}
此外,如果您的
DIV
包含一个从页面导航出去的链接,单击该链接可能会导致页面位置在事件冒泡到body标记之前发生更改。如果是这样,您可以尝试将事件附加到调用
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);
        }
    }); 
}

您的警报(“内部div”)是否触发?是的。这很有效。它只是不发送邮件。我知道这个模型也能工作,因为如果我
!isset
DB
try
$.ajax({type:“POST”,url:“tq/--record events.inc.php”,数据:{dataString:dataString}})中创建一条记录
@Dheed不起作用。能否尝试打印/转储$\u POST数组<代码>变量转储
文件放置内容('array',print\r($\u POST,true))链接由托管在第三方服务器上的JS脚本动态生成。到目前为止,我没有单击div中的链接。我只是单击div。但是,我明白你的意思。你是否尝试向ajax调用添加
成功
错误
处理程序,以查看它是否遇到任何问题?不-我没有。我该怎么做?我只是查看Firefox中的JavaScript控制台,它没有记录任何错误。如果Ajax调用遇到服务器端问题,它们不会抛出JavaScript错误。我将更新我的答案,并建议如何做。服务器端不是问题,因为如果
!i设置
并重新加载页面--成功插入数据库记录。(这消除了服务器端错误,不是吗?)