2013-10-08 54 views
0

使用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'); 
+0

我上面的代碼在主題爲「二十十三」的工作,在頁面上。我猜測,我錯過了我的主題。 – user2197774

+0

A [working example](http://stackoverflow.com/questions/13498959/how-to-use-ajax-in-a-wordpress- shortcode/13614297) – brasofilo

回答

0

內容類型 - 應用程序/ JSON

文件/wp-admin/admin-ajax.php

測試發送數據($ _ POST,$ _REQUEST ...)

如果必要的話,應用修訂

$headers = getallheaders(); 
if (strpos($headers['Content-Type'], 'application/json') !== false) { 
     $input = json_decode(file_get_contents("php://input"), true); 
     $_REQUEST['action'] = $input['action']; 
} 

後插入
/** Load WordPress Bootstrap */ 
require_once(dirname(dirname(__FILE__)) . '/wp-load.php'); 

這裏...

+0

簡單測試 - filter_var($ input ['action'] ) – HalcheSM