2017-05-03 85 views
0
add_action('wp_ajax_ybr_client_results', 'ybr_client_results'); 
add_action('wp_ajax_nopriv_ybr_client_results', 'ybr_client_results'); 

function ybr_client_results() { 
    $client_details = $_POST[ 'client_details' ]; 
    return $client_details; 
    die(); 
} 
echo ybr_client_results(); 

它返回值为0.如何修复它。Wordpress Admin ajax请求函数返回值为0时的回显

+1

什么就是为什么你应该呼应的原因应该从ajax脚本调用它之外的ajax函数。我也建议你使用WordPress函数wp_die(); – heero

+0

是的,这回声没有任何意义......查找'wp_send_json_success'和'wp_send_json_error'函数 – brasofilo

+0

我只是想传递这$ client_details变量值来从数据库中获取数据 –

回答

0

您已正确注册AJAX回调;该代码将在AJAX操作触发时执行。该功能不应该被回显。

有几个与回调本身的问题:

  • 它返回一个变量,而不是产生输出
  • 有上述die() return语句使该行从未达到

更正后的版本:

function ybr_client_results() { 
    /** 
    * I've left this unaltered for the sake of answering the question at hand. 
    * 
    * Don't forget to check the value exists and sanitize it correctly. 
    */ 
    $client_details = $_POST['client_details']; 

    // This AJAX callback needs to output something, not return. 
    echo $client_details; 

    // As another user mentioned, there's a WP specific die function. 
    wp_die(); 
} 
add_action('wp_ajax_ybr_client_results', 'ybr_client_results'); 
add_action('wp_ajax_nopriv_ybr_client_results', 'ybr_client_results'); 

文档:https://codex.wordpress.org/AJAX_in_Plugins

+0

我只是想通过这个$ client_details变量值从数据库中获取数据 –

+0

上面的代码应该解决您最初的问题,或者至少解决作为该问题一部分发布的代码中的所有缺陷。一旦你在AJAX回调中获得了JS的价值,就可以以任何你喜欢的方式对待它。 –

0

你可以试试下面的下面的代码片段从数据库fetech数据,并使用json_encode()进行编码,然后调用wp_die()

add_action('wp_ajax_ybr_client_results', 'ybr_client_results'); 
add_action('wp_ajax_nopriv_ybr_client_results', 'ybr_client_results'); 

function ybr_client_results() { 

    $client_details = $_POST[ 'client_details' ]; 

    $result = getPosts(); 

    echo json_encode($result, true); 

    wp_die(); 
}