2016-01-06 120 views
0

我在我的functions.php文件中有以下代码。WordPress的管理员阿贾克斯不工作,返回页面的整个HTML

wp_enqueue_script('broadcast-ajax-request', get_template_directory_uri() . '/js/global.js', array('jquery')); 
wp_localize_script('broadcast-ajax-request', 'ajaxadmin', array('ajaxurl'=> admin_url('admin-ajax.php'))); 

add_action('wp_ajax_get_my_option', 'get_my_option'); 
add_action('wp_ajax_nopriv_get_my_option', 'get_my_option'); 

function get_my_option() 
{ 
    print_r($_POST); exit; 
} 

以下代码在global.js

jQuery('document').ready(function(){ 
    jQuery("#submit_btn").click(function(){ 
    jQuery.ajax({ 
     url: ajaxadmin.ajaxurl, 
     data: {'action':'get_my_option', 'test':'test'}, 
     type: "POST", 
     success: function(response){ 
     } 
    }); 
    }); 
}); 

但它总是返回html代码作为回应。

+0

使用'dataType:“json”,如果你想要json。 –

+0

已经尝试过,同样的问题@ParthTrivedi – hemsbhardiya

+0

你想要什么回应? –

回答

0

脚本排队,并本地化需要发生在wp_enqueue_scripts行动挂钩:

function so_34632421_enqueue_scripts() { 
    wp_enqueue_script('broadcast-ajax-request', get_template_directory_uri() . '/js/global.js', array('jquery')); 
    wp_localize_script('broadcast-ajax-request', 'ajaxadmin', array('ajaxurl'=> admin_url('admin-ajax.php'))); 
} 
add_action('wp_enqueue_scripts', 'so_34632421_enqueue_scripts'); 

更多in the Codex

+0

试过,但仍然是同样的事情。返回HTML代码 – hemsbhardiya

0

这绝对是一个迟到的回复,但希望它可以帮助某人。

当本地化WordPress管理AJAX网址,你正在设置由WordPress的插入到你的页面作为这样一个变量:

/* <![CDATA[ */ 
var bookingajax = {"ajax_url":"http:\/\/localhost:8888\/wp-admin\/admin-ajax.php"}; 
/* ]]> */ 

当使用admin-ajax.php是你的插件的后端,该adminajax变量设置为这样:

var ajaxurl = '/gss/wp-admin/admin-ajax.php', 

,最好的方法来检查一个AJAX网址已被定位为打印到控制台已设置的变量。

在我的示例中,我使用bookingajax设置了本地化的admin-ajax.php。

如果你用console.log(bookingajax)打印这个变量,你会看到现在存储在一个javascript对象中。

这里是解决方案!

在上例中,您仍在使用adminajax变量。您将需要添加在前端存储的变量中设置的下划线。

var ajaxurl = bookingajax.ajax_url; 

jQuery.ajax({ 
     url: ajaxurl, 
     data: {'action':'get_my_option', 'test':'test'}, 
     type: "POST", 
     success: function(response){ 
     } 
    });