2015-12-04 70 views
2

我有一个questio与ajax相关。有时它会得到正确的响应,但有时只返回0.可能是什么问题?主机或代码?Wordpress错误的Ajax响应

代码如下:

的jQuery:

$(document).ready(function(){ 
    //var cat = $(".bear_image").children("img").attr("alt"); 
    var top = $("li"); 
    var icons = $(top).children(".icons").children("div"); 

    $(icons).click(function(){ 
     //var icon = $(this).attr("class"); 
     var item = $(this).attr("id"); 
     var bear_id = $(this).parents("li").find("> .bear_image img"); 

     var data = { 
      'action' : 'get_image_name', 
      'item' : item, 
      'bear_id' : bear_id.attr('alt') 
     }; 

     $.post(ajaxurl, data, function(response) { 
      //alert('Got response from server: ' + response); 
      $(bear_id).attr("src", response); 
     }); 
    }); 
}); 

的functions.php

function jj_get_images() 
{ 
    global $wpdb; 

    $item = esc_attr($_POST['item']); 
    $bear_id = esc_attr($_POST['bear_id']); 
    $query = "SELECT * FROM wp_acc_img WHERE position = " . $item . " AND bearid = ". $bear_id; 

    $result = $wpdb->get_row($query); 
    $c = $result->num_rows; 
    $upload_dir = wp_upload_dir(); 
    $var = $upload_dir['url'] . "/" .$result->img.".png"; 

    die($var); 

    wp_die(); 


} 
add_action('wp_ajax_get_image_name', 'jj_get_images'); 



function pluginname_ajaxurl() { 
?> 
<script type="text/javascript"> 
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 
</script> 
<?php 
} 
add_action('wp_head','pluginname_ajaxurl'); 

似乎没有问题啊。问题是,有时候它会返回完整的url,它应该是什么样的,但有时它只返回0,并且不能正确执行代码?你有什么建议吗。

感谢您的帮助:)

+0

好,如果查询结果是空的接缝显然没有URL返回,检查$ c值,并作出适当的回应 –

回答

2

变化: $(icons).click(function(){

$(icons).click(function(e){ 
e.preventDefault(); 
}); 

注意:当前设置将只能用于登录用户, 的任务使用wp_ajax_nopriv行动

add_action('wp_ajax_nopriv_get_image_name', 'jj_get_images'); 
+0

如何为不仅登录的用户? – user2204367

+0

现在当你没有登录时它实际上工作。是否有可能使两者都可以? :X – user2204367

+0

同时使用'wp_ajax_nopriv'和'wp_ajax' – madalinivascu