2016-04-12 17 views
0

OK, ich weiß absolut nichts über jQuery, AJAX etc, ich habe ein jQuery/AJAX-Skript, das ich geändert habe, um zu tun, was ich brauche, nämlich das Laden eines Bildes, Aktualisierung der MySQL-Datenbank durch Erhöhung von "views" um 1 Das läuft perfekt, wenn ich auf Safari bin, aber aus irgendeinem unbekannten Grund scheint es nicht zu funktionieren, oder es ist zumindest intermittierend bestenfalls in Chrom. Ich habe andere Browser noch nicht ausprobiert.jQuery load() funktioniert nicht in Chrom?

hier ist die 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; 
}}); 
}); 

die html/php, die die Klasse und Daten ClientID umfasst:

$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>'; 

und schließlich der Blick-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"; 
} 

Warum sollte ich Probleme mit Chrom haben, aber nicht Safari? Hat es etwas damit zu tun, dass Bilder zwischengespeichert werden? oder vielleicht ist ein Teil des Codes veraltet? Wie ich schon sagte, ich bin ein kompletter Neuling mit jQuery/Ajax, also würde ich nicht einmal wissen wo ich anfangen soll zu versuchen und das Problem zu lösen! Ich bin überrascht, dass ich es geschafft habe, es überhaupt zum Laufen zu bringen!

wie immer wird jede Hilfe sehr geschätzt!

Dank

Kaylee

+0

'.view-count' ist wahrscheinlich ein Element, das das 'load'-Ereignis nicht unterstützt. – GillesC

+0

?? Ich verstehe nicht? View-Count ist eine Klasse für ein Bild? und es funktioniert in Safari, jedes Mal, kein Problem ... Was würden Sie vorschlagen, das Problem zu beheben? – Kaylee

+0

Haben Sie Fehler in Ihrer Browser-Konsole? Wie wäre es mit anderen Browsern (FF, IE)? [Siehe dieses ähnliche Problem] (https://forum.jquery.com/topic/works-in-safari-but-no-other-browser-not-firefox-chrome-or-ie-ie-why). – Vucko

Antwort

0

ok ... Ich habe die letzten paar Stunden damit verbracht, auf das einige der Forschung, und ich fand, zumindest für mich, eine Lösung, die funktioniert.

Zuerst arbeitete ich an meinem localhost, und von was ich lesen kann, funktioniert load() nicht in Chrome bei der Arbeit an localhost, aufgrund der "gleichen Ursprungsrichtlinie", siehe diesen Feed für weitere Details jQuery .load() not working in Chrome

Zweitens, ich hatte immer noch das gleiche Problem, wenn ich meine Dateien auf einen Server hochgeladen habe, und aus einigen Nachforschungen entdeckte ich, dass chrome die Bilder, die geladen wurden, zwischenspeichert, und so das jquery-Skript nicht ausgeführt. Wenn Sie am Ende der URL src etwas Einzigartiges hinzufügen, wird Chrome gezwungen, das Image vom Server und nicht vom Cache neu zu laden, da es als neues Image betrachtet wird. persönlich habe ich eine PHP-Variable von $ time = date (his) erstellt; zu wissen, dieses einzigartige Sekunde zu Sekunde, würde und fügte hinzu, es dann auf das Bild src wie so

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

jeder jetzt Zeit, die ich eine Anfrage senden es den Cache verwenden tut um das Bild zu laden, und so wird meine Jquery ausgeführt (yaaay)! Hoffe, das hilft jemandem, der das gleiche Problem hat.

Verwandte Themen