从PHP脚本返回JSON

时间:2016-06-08 16:27:22

标签: php json

我知道这类话题有很多内容,但在我的案例中发生的事情很奇怪。

事实是,这没有问题,突然间它没有返回任何东西。 $data$postsInCat具有所需内容,但在回显时,收到的回复为空。

以下是代码:

<?php
header('Content-Type: application/json');
include "wp-blog-header.php";
mb_internal_encoding("UTF-8");

$paged = (get_query_var('page')) ? get_query_var('page') : 1;
$temp = $wp_query;
$wp_query= null;
$args = array(
              'posts_per_page' => 20,
              'post_type'      => 'post',
              'paged'          => $paged,
              'nopaging'       => false,
              'cat'            => $_GET['author']
);
$wp_query = new WP_Query($args);

$data = array();
while ($wp_query->have_posts()) : $wp_query->the_post();
    $obj = new stdClass;
    $obj->id              = $post->ID;
    $obj->title           = $post->post_title;
    $obj->excerpt         = substr(strip_tags($post->post_content), 0, 250).'...';
    $obj->slug            = str_replace('http://187.38.230.170/', '', get_permalink($post->ID));
    $obj->author_name     = get_user_by('id', $post->post_author)->user_login;
    $obj->featured_image  = wp_get_attachment_url( get_post_thumbnail_id($post->ID, 'post-thumbnails') );
    $obj->date            = new DateTime($post->post_date);
    $obj->date            = $obj->date->format("F d, Y");

    array_push($data, $obj);
endwhile;

$postsInCat = get_term_by('id', $_GET['author'], 'category');
echo json_encode(array('data' => $data, 'n_resultados' => $postsInCat->count));
?>

如果我使用$data函数打印print_r,则会打印整个内容。

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

使用json_last_error()检查JSON错误。可能有一个不能放在JSON中的角色。我遇到了同样的问题,我使用了这段代码:

<?php
    function utf8ize($d) {
        if (is_array($d)) {
            foreach ($d as $k => $v) {
                $d[$k] = utf8ize($v);
            }
        } else if (is_string ($d)) {
            return utf8_encode($d);
        }
        return $d;
    }
?>

你可以做类似的事情:

$array = utf8ize($array);