2015-04-07 93 views
1

我設置了一個插件。現在我試圖讓AJAX-PHP代碼正常工作,但我沒有獲得成功的數據,並且都以錯誤結束。WordPress的:AJAX不工作

tracker.php是主要的插件文件。

這是打印標題和一些HTML代碼在我tracker.php功能:

require_once dirname(__FILE__) . '/user-listing.php'; 

function trez_tracker_user_listing(){ 
    ?> 
    <h1>Tracker - User List</h1> 
    <div class="clicker">Click here</div> 
    <div id="printer"></div> 
    <?php  
}//trez_tracker_user_listing 

所以在用戶listing.php我添加以下代碼:

function user_listing_enqueuer() { 
    wp_register_script("ajax_user_request", WP_PLUGIN_URL.'/tracker/script/ajax_user_request.js', array('jquery')); 
    wp_localize_script('ajax_user_request', 'myAjax', array('ajaxurl' => admin_url('admin-ajax.php'))); 
    wp_enqueue_script('jquery'); 
    wp_enqueue_script('ajax_user_request'); 
} 
add_action('init', 'user_listing_enqueuer'); 

function user_fetcher(){ 
    $result = 'Message to display'; 
    return $result; 
}//user_listing 
add_action("wp_ajax_user_fetcher", "user_fetcher"); 

而且最終的JavaScript代碼在/script/ajax_user_request.js:

/* ajax_user_request.js */ 
jQuery(document).ready(function() { 
    jQuery(".clicker").click(function() { 

     jQuery.ajax({ 
     type : "post", 
     dataType : "json", 
     url : myAjax.ajaxurl, 
     data : {action: "user_fetcher"}, 
     success: function(response) { 
      if(response.type == "success") { 
       jQuery("#printer").html(response) 
      } 
      else { 
       alert("AJAX error") 
      } 
     }//success 
     })//jQuery.ajax 
    })//Clicker function 
})//document ready 

當在點擊,我剛剛收到警告消息「AJAX錯誤」。 我該如何解決它?

謝謝!

回答

3

您正在收到錯誤,因爲您沒有返回JSON數據,而是通過您的user_fetcher函數返回字符串。

function user_fetcher(){ 
    $result = 'Message to display'; 
    return $result; 
}//user_listing 

更改user_fetcher函數,以便它將JSON數據返回給AJAX調用。

function user_fetcher(){ 
    $result = 'Message to display'; 
    echo json_encode(array('type'=>'success', 'message'=>$result)); 
    die(0); 
}//user_listing 

而在jQuery的檢查這樣的迴應:

success: function(response) { 
    if(response.type == "success") { 

     // Add message 
     jQuery("#printer").html(response.message) 
    } 
    else { 
     alert("AJAX error") 
    } 
}//success 

對於鉤wp_ajax_user_fetcher,請確保您使用此登錄後,如果您未在管理部分記錄的,然後你必須使用wp_ajax_nopriv_user_fetcher。或者您可以同時使用:

// Work if user is login 
add_action("wp_ajax_user_fetcher", "user_fetcher"); 

// Work if user is not login 
add_action("wp_ajax_nopriv_user_fetcher", "user_fetcher"); 
+0

您的修訂很好,但我再次收到「AJAX錯誤」警報。 – Trez

+0

通過chrome或firebug中的開發人員工具欄檢查請求URL和返回的數據。 –

+0

它的工作原理。我沒有像你所建議的那樣編輯user_fetcher。非常感謝 – Trez