好的,我对jQuery,ajax等一无所知,我有一个jQuery / ajax脚本,我已经修改过我需要的东西,这是在加载图像时,通过增加"来更新mysql数据库。视图"如果我在野生动物园中,这完全可以运行,但由于某些未知的原因,它似乎无法工作,或者至少在铬中是间歇性的。我还没有尝试过其他浏览器。
这是jQuery:
$('.view-count').load(function(){
var ClientID=$(this).attr('data-ClientID');
$.ajax({url:"inc/view-count.php?ClientID="+ClientID,cache:false,success:function(result){
return true;
}});
});
包含类和数据的html / php-ClientID:
$output .= '<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4"><a href="app.php?id=' . $id . '"><img class="img-responsive center-block img-border view-count" data-ClientID="' . $id . '" src="images/efits/' . $efit . '" alt="' . $bname . '" /></a></div>';
最后是view-count.php:
$clientID = (int) $_GET['ClientID'];
try {
$querySql = 'SELECT * FROM clients WHERE id LIKE :clientid';
$countquery = $db->prepare($querySql);
$countParams = array(':clientid'=>$clientID);
$countquery->execute($countParams);
$result = $countquery->fetch(PDO::FETCH_ASSOC);
$views = $result['views'];
} catch (PDOException $e) {
echo 'failed to get client views';
}
try {
$countSql = 'UPDATE clients SET views=:newview WHERE id LIKE :id';
$count = $db->prepare($countSql);
$countParams = array(':newview' => $views+1,':id' => $clientID);
$count->execute($countParams);
} catch (PDOException $e) {
echo "failed to increase view count";
}
为什么我会遇到铬问题而不是狩猎问题?是否与缓存图像有关?或者可能有些代码已被弃用?正如我所说,我是jQuery / ajax的新手,所以我甚至不知道从哪里开始尝试解决问题!我很惊讶我设法让它在第一时间起作用!
一如既往,非常感谢任何帮助!
由于
王小强
答案 0 :(得分:0)
好的......我花了最后几个小时对此进行了一些研究,我找到了一个至少对我有用的解决方案。
首先,我正在使用我的本地主机,从我可以阅读的内容来看,由于“相同的原始策略”,在使用localhost时,load()在chrome中不起作用,请参阅此feed以获取更多详细信息{{ 3}}
其次,当我将文件上传到服务器时,我仍然遇到同样的问题,并且从一些研究中我发现chrome正在缓存正在加载的图像,因此没有运行jquery脚本。如果你在src url的末尾添加一些独特的东西,它会强制chrome从服务器而不是缓存重新加载图像,因为它被认为是一个新图像。就个人而言,我创建了一个$ time = date(他的)的php变量;知道这将是第二到第二的唯一,然后将其添加到图像src,如此
src="image-file-path.jpg?unique=<?php echo $time; ?>"
现在每次我发送请求时都不会使用缓存加载图像,所以我的jquery被执行(yaaay)!希望这可以帮助有同样问题的人。