2016-01-06 42 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){ 
     } 
    });