2016-07-10 4 views
0

Я пытаюсь получить массив данных из моей php-функции с помощью ajax, но с трудным временем. Вот мой PHP функция:Как получить данные массива php с помощью jQuery ajax

function dallas_db_facebook_make_post() { 
    global $wpdb; 
    $query = "SELECT * FROM wp_dallas_facebook WHERE time > NOW() ORDER BY time LIMIT 1"; 
    $results = $wpdb->get_results($query, ARRAY_A); 

    foreach($results as $result) { 
     $fbposttext = $result['text']; 
     $fbposttime = $result['time']; 
     $array = array('post' => $fbposttext, 'posttime' => $fbposttime); 
     echo json_encode($array); 

    } 

} 

Вот моя функция JQuery:

function send_fb_post() { 
    jQuery.ajax({ 
     type: "POST", 
     url: my_ajax.ajaxurl, 
     dataType: 'json', 
     data: { 
      'action': 'dallas_db_facebook_make_post' 

     }, 
     beforeSend: function() { 
     }, 
     success: function(data){ 
      var jq_json_obj = jQuery.parseJSON(data); 
      console.log(jq_json_obj); 

     }, 
     error: function(){ 
     }, 
    }); 
}; 
+0

Вы отправляете данные в php-функцию и ожидаете данные в форме массива назад или хотите отправить массив на сторону php? – da1lbi3

+0

Я пытаюсь получить данные из php-функции в виде массива, который будет использоваться в моей функции jQuery. – user715564

ответ

0

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

function dallas_db_facebook_make_post() { 
    global $wpdb; 
    $query = "SELECT * FROM wp_dallas_facebook WHERE time > NOW() ORDER BY time LIMIT 1"; 
    $results = $wpdb->get_results($query, ARRAY_A); 

    foreach($results as $result) { 
     $fbposttext = $result['text']; 
     $fbposttime = $result['time']; 
     $array[] = array('post' => $fbposttext, 'posttime' => $fbposttime); 
    } 
     echo json_encode($array); 

} 
+0

Спасибо, но это не сработало. – user715564

0
function dallas_db_facebook_make_post() { 
    global $wpdb; 
    $query = "SELECT * FROM wp_dallas_facebook WHERE time > NOW() ORDER BY time LIMIT 1"; 
    $results = $wpdb->get_results($query, ARRAY_A); 

    foreach($results as $result) { 
     $fbposttext = $result['text']; 
     $fbposttime = $result['time']; 
     $array[] = array('post' => $fbposttext, 'posttime' => $fbposttime); 
    } 
     echo json_encode($array); 

} 

Ajax вызов:

$.ajax({ 
     type: "POST", 
     url: "your url", 
     dataType: "json", 
     data: {action: 'dallas_db_facebook_make_post'}, 
     success: function(response) { 
      console.log(response); 
     } 
}); 

И проверить, что вы видите в консоли. Если вы используете Chrome в качестве браузера, щелкните правой кнопкой мыши и щелкните элемент проверки. Вы видите консоль.

Я думаю, вы можете получить элемент как: response [index] ['post'];

+0

Ничего не возвращается в консоли. Если я делаю что-то вроде «error: function (error) {console.log (error)}», то похоже, что массив появляется в консоли. – user715564

+0

Хорошо, а что такое запрос в chrome под вкладкой сети? Можете ли вы опубликовать снимок экрана? – da1lbi3

+0

Я могу сделать снимок экрана, но это просто говорит о действии данных формы: dallas_db_facebook_make_post – user715564

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