2016-04-12 47 views
0

好吧,我对jQuery,ajax等一无所知,我有一个jQuery/ajax脚本,我已经修改了它来执行我所需要的操作,这是在加载图像时,通过将“视图”增加1来更新mysql数据库。如果我在safari里,这个运行非常完美,但由于某种未知的原因,它看起来并不起作用,或者至少在铬中是间歇性的。我还没有尝试其他浏览器。jQuery的加载()不工作在铬?

这里是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>'; 

和最后的视图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"; 
} 

为什么我会遇到铬问题,但不是safari?这是与图像缓存有关吗?或者某些代码已被弃用?正如我所说,我是一个完全新手jQuery/ajax,所以我甚至不知道从哪里开始尝试解决问题!我很惊讶,我设法让它工作在第一位!

一如既往,任何帮助非常感谢!

感谢

王小强

+0

'.view-count'可能是一个不支持'load'事件的元素。 – GillesC

+0

??我不明白? view-count是一个图像的类?并且它在safari中工作,每次都没问题......你会建议如何解决这个问题? – Kaylee

+0

在浏览器控制台中是否有任何错误?其他浏览器(FF,IE)如何? [看到类似的问题](https://forum.jquery.com/topic/works-in-safari-but-no-other-browser-not-firefox-chrome-or-ie-why)。 – Vucko

回答

0

确定...我已经花了几个小时做一些这方面的研究,我发现,至少对我的作品的解决方案。

首先,我正在研究我的本地主机,并且从我所能读取的信息来看,load()在本地主机上工作时无法在chrome中工作,由于“同源策略”,请参阅此提要以获取更多详细信息jQuery .load() not working in Chrome

其次,当我将文件上传到服务器时,我仍然遇到同样的问题,并且从一些研究中,我发现chrome正在缓存正在加载的图像,所以没有运行jquery脚本。如果您在src url的末尾添加了独特的内容,它会强制chrome从服务器重新加载映像,而不是缓存,因为它被认为是新映像。我个人创建了一个php变量$ time = date(his);知道这将是唯一的第二至第二,然后加入到图像的src像这样

src="image-file-path.jpg?unique=<?php echo $time; ?>" 

现在每次我发送它不使用缓存加载图像的请求,并且因此执行我的jquery( yaaay)!希望这可以帮助有同样问题的人。