2016-10-23 2 views
0

Я хотел бы получить функцию как ответ Json в моем вызове Ajax после того, как документ будет готов. Я не уверен, если я на правильном пути, но вот то, что я сделал до сих пор:Wordpress AJAX: Получить функцию как ответ Json

Мой Html

<!--Where i want to load my function--> 
<div id="applications"></div> 

Мой Ajax/Jquery

jQuery(document).ready(function(){ 
    init_applications(); 
}); 
function init_applications(){ 
    var app_data = new FormData(); 
    app_data.append('action', 'applications'); 
    app_data.append('uid', uid); 
    app_data.append('pid', pid); 
    jQuery.ajax({ 
     method: 'post', 
     url: ajaxurl, 
     dataType: 'json', 
     data: app_data, 
     processData: false, 
     contentType: false, 
     beforeSend:function(data){ 
      //something 
     }, 
     success:function(data) { 
      $('#applications').html(data.htmlapp); 
      //console.log(data); 
     }, 
     error: function(data){ 
      //console.log(data); 
     } 
    }); 
    //alert("a"); 
} 

Конечно в моем functions.php

add_action('wp_ajax_applications', 'applications'); 
function applications(){ 
    $uid = $_POST['uid']; 
    $pid = $_POST['pid']; 
    $applications = inside_applications(); 
    $response = array('htmlapp'=>$applications); 
    wp_send_json($response); 
} 

и, наконец, я создал свою отдельную функцию всегда в functions.php

function inside_applications(){ 
    //Some html code and instructions 
} 

Возможно ли это или я полностью из пути? Не могли бы вы дать мне несколько советов? Большое спасибо.

+0

Возможный дубликат [Возврат данных JSON с помощью ajax в wordpress] (http://stackoverflow.com/questions/17982078/returning-json-data-with-ajax-in-wordpress) – Dez

+1

@Dez Ужасно. Я много искал, но я не проверял это решение. Благодарю. – XiLab

+0

С быстрым чтением, единственное, что я вижу, в ваших функциональных приложениях: вам нужно выйти() или wp_die() в конце. – Benoti

ответ

0

Все предыдущие рассуждения были в порядке, просто нужно вернуть значения или html в функции, которую вы хотите включить. В моем случае было.

function inside_applications(){ 
    //Some html code and instructions 
    $html = '<div class="something>everything</div>'; 
    $html .= '<div class="solved">solved</div>'; 
    //Insert some if or instructions 
    return $html; 
} 

Как обсуждалось в комментариях wp_send_json() крючке уже print() и die() так что не нужно делать ничего больше. Возможно, есть и другие лучшие методы для этого, но моя цель состояла в том, чтобы Ajaxify тему Wordpress и иметь отдельные многочисленные функции, обновляемые и готовые к вызовам и действиям jQuery.

Смежные вопросы