I don’t use W3 so I don’t know if it works, but here’s the code that was on that webpage…
/**
* Get WP-PostRatings via ajax
*
* Useful when using cache plugins like WP Super Cache or W3 Total Cache
*
*/
function ac_get_rating_ajax($postID) {
// Create nonce - security measure
$nonce = wp_create_nonce('display-rating');
// Placeholder HTML that will get replaced when the rating loads
$out .= '<div id="ac-ratings-wrap-' . $postID . '">';
$out .= '<p>Just a moment please...</p>';
$out .= '</div>';
// Script to get the rating
$out .= '<script type="text/javascript">';
$out .= 'jQuery(document).ready(function($) {';
$out .= '$.ajax({';
$out .= 'url : "' . admin_url( 'admin-ajax.php' ) . '",';
$out .= 'dataType: "jsonp", ';
$out .= 'data : { "id" : "' . $postID . '", "_ajax_nonce" : "' . $nonce . '", action : "ajax_display_rating" }, ';
$out .= 'success : function(response) { $("#ac-ratings-wrap-' . $postID . '").html(response.output); }';
$out .= '});';
$out .= '});';
$out .= '</script>';
// Return it
return $out;
}
// Hook ajax function into admin-ajax.php
add_action( 'wp_ajax_nopriv_ajax_display_rating', 'ac_ajax_display_rating' );
add_action( 'wp_ajax_ajax_display_rating', 'ac_ajax_display_rating' );
// Ajax function
function ac_ajax_display_rating() {
// Nonce
$nonce = $_GET['_ajax_nonce'];
if ( !wp_verify_nonce( $nonce, 'display-rating' ) ) die('Security check');
// Check Ajax referer
if ( !check_ajax_referer( 'display-rating', '_ajax_nonce', false ) ) die('Security check');
global $wpdb;
// SQL injection protection
$postID = $wpdb->escape($_GET['id']);
if ( !is_numeric($postID) ) die('error');
// Return the rating display (not echo)
$out = the_ratings( 'div', $postID, false );
// Encode and echo
$arr = array( 'output' => $out );
$arr = json_encode($arr);
echo $_GET['callback'] . '(' . $arr . ');'; // Callback is generated by jQuery
exit();
}