使用Ajax在WP的最新版本,我創建了一個主題,index.php頁面上我有以下HTML:在WordPress
<p><input type="hidden" name="GreetingAll" id="GreetingAll" value="Hello Everyone!" /> <input type="submit" id="PleasePushMe" /></p>
<div id="test-div1"></div>
我的主題functions.php文件,我增加了以下功能:
function add_myjavascript(){
wp_enqueue_script('js', get_template_directory_uri().'/lib/js/js.js', array('jquery'));
//wp_localize_script('js', 'ajax_object', array('ajaxurl' => admin_url('admin_ajax.php')));
}
add_action('wp_enqueue_scripts', 'add_myjavascript');
function MyAjaxFunction(){
//get the data from ajax() call
$GreetingAll = $_POST['GreetingAll '];
$results = "<h2>".$GreetingAll."</h2>";
// Return the String
die($results);
}
// creating Ajax call for WordPress
add_action('wp_ajax_nopriv_MyAjaxFunction', 'MyAjaxFunction');
add_action('wp_ajax_MyAjaxFunction', 'MyAjaxFunction');
我的JavaScript js.js:
jQuery(document).ready(function() {
var GreetingAll = jQuery("#GreetingAll").val();
jQuery("#PleasePushMe").click(function(){
jQuery.ajax({
type: 'POST',
url: 'http://localhost/brenda/wordpress/wp-admin/admin-ajax.php',
data: {
action: 'MyAjaxFunction',
GreetingAll: GreetingAll,
},
success: function(data, textStatus, XMLHttpRequest){
alert(data);
jQuery("#test-div1").html('');
jQuery("#test-div1").append(data);
},
error: function(MLHttpRequest, textStatus, errorThrown){
alert(errorThrown);
}
});
});
});
我的Ajax請求正常工作:
---------------
Request Method:POST
Status Code:200 OK
Form Data
action:MyAjaxFunction
GreetingAll:Hello Everyone!
---------------
在我的admin-ajax.php中,do_action激發。我在plugin.php中回覆了一條消息,以測試它是否正在觸發。但是我的函數MyAjaxFunction()沒有得到執行。注意add_actions被執行,我測試了。我輸入到目標test-div1的輸出爲零,這是默認狀態,請參見下文。
if (is_user_logged_in())
{
do_action('wp_ajax_' . $_REQUEST['action']); // Authenticated actions
}
else
{
do_action('wp_ajax_nopriv_' . $_REQUEST['action']); // Non-admin actions
}
//Default status
die('0');
我上面的代碼在主題爲「二十十三」的工作,在頁面上。我猜測,我錯過了我的主題。 – user2197774
A [working example](http://stackoverflow.com/questions/13498959/how-to-use-ajax-in-a-wordpress- shortcode/13614297) – brasofilo