2017-02-09 2 views
1

J'essaie d'intégrer l'info-bulle QTip jquery dans mon site Wordpress, en utilisant Ajax pour déclencher une info-bulle avec des informations extraites d'une table de base de données personnalisée.Qtip et ajax dans Wordpress - l'action ne fonctionne pas

J'ai ajouté la Enque et des trucs d'action à mon function.php:

function enqueue_scripts_styles_init() { 
    wp_enqueue_style('qtip', 'http://www.my-site.com/wp-content/themes/my-theme/qtip/jquery.qtip.min.css', null, false, false); 
    wp_enqueue_script('qtip', 'http://www.my-site.com/wp-content/themes/my-theme/qtip/jquery.qtip.min.js', array('jquery'), false, true); 
    wp_enqueue_script('qtipCall', 'http://www.my-site.com/wp-content/themes/my-theme/qtip/qtipcall.js', array('jquery', 'qtip'), false, true); 
    wp_localize_script('qtipCall', 'ajax_object', array('ajaxurl' => admin_url('admin-ajax.php'))); 
} 
add_action('init', 'enqueue_scripts_styles_init'); 

function ajax_action_stuff() { 
    global $wpdb; 
    $hero = $_POST['who']; 
    $results = $wpdb->get_row($wpdb->prepare ('SELECT * FROM wp_herotable WHERE Name = %s', $hero)); 
    $hero_bio = $results->Bio; 
    echo $hero_bio; 
    wp_die(); 
} 
add_action('wp_ajax_ajax_action', 'ajax_action_stuff'); 
add_action('wp_ajax_nopriv_ajax_action', 'ajax_action_stuff'); 

Ceci est mon qtipcall.js:

jQuery(document).ready(function($) { 
$('[tip-hero').each(function() { 
    $(this).qtip({ 
     content: { 
      text: function(event, api) { 
       $.ajax({ 
       url: ajax_object.ajaxurl, 
       type: 'POST', 
       action: 'ajax_action', 
       data: {who: $(this).attr("tip-hero")}, 
      }) 
       .then(function(content) { 
        // Set the tooltip content upon successful retrieval 
        api.set('content.text', content); 
       }, function(xhr, status, error) { 
        // Upon failure... set the tooltip content to error 
        api.set('content.text', status + ': ' + error); 
       }); 

       return 'Loading...'; // Set some initial text 
      } 

     }, 

     style: { 
     classes: 'qtip-dark qtip-rounded qtip-shadow' 
     } 
    }); 
}); 

});

Enfin, ma page:

<a hfer="#" tip-hero="Joan of Arc">Joan of Arc</a> 

Le résultat est une info-bulle cool avec un 0 dedans! J'ai vérifié l'admin ajax.php et le zéro provient de:

// Require an action parameter 
if (empty($_REQUEST['action'])) 
die('0'); 

Je pense qu'il ya un problème avec mon appel d'action mais je ne comprends vraiment pas ce qu'il est.

Toute aide sera appréciée.

Merci.

Répondre

0

Changer votre ajax pour envoyer la valeur d'action:

data: {who: $(this).attr("tip-hero"),action: 'ajax_action'}, 
+0

Merci! Tu es mon héros! ;) – wtfatty