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设置
并重新加载页面--成功插入数据库记录。(这消除了服务器端错误,不是吗?)