2017-02-09 5 views
1

Я пытаюсь интегрировать всплывающую подсказку QTip jQuery на моем сайте Wordpress, используя Ajax для запуска всплывающей подсказки с некоторой информацией, извлеченной из таблицы пользовательских баз данных.Qtip и ajax в Wordpress - действие не работает

Я добавил enque и прочее действие моему 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'); 

Это мой 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' 
     } 
    }); 
}); 

});

Наконец, моя страница:

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

В результате крутая подсказка с 0 в нем! Я проверил админ-ajax.php и нуль исходит от:

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

Так что я думаю, что есть проблема с моим вызовом действия, но я действительно не могу понять, что это такое.

Любая помощь будет оценена по достоинству.

Спасибо.

ответ

0

Изменить Аякс отправить значение действия:

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

Спасибо! Ты мой герой! ;) – wtfatty