2016-06-08 2 views
0

나는이 종류의 주제에 대해 많은 내용을 알고 있지만 내 경우에는 어떤 일이 일어나고 있는지 이상하게 생각합니다.PHP 스크립트에서 JSON 반환

실제로 이것은 문제없이 작동하고 갑자기 아무 것도 반환하지 않습니다. $data$postsInCat에는 원하는 내용이 있지만 에코 될 때 수신 된 응답은 비어 있습니다. 내가 print_r 기능 $data를 인쇄하면 전체 내용을 인쇄,

<?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)); 
?> 

: 여기

는 코드입니다.

어떤 현상이 발생하고 있는지 알 수 있습니까?

+0

비 UTF-8 문자를 가지고 있습니까? 왜냐하면 잘못된 charset을 시도하면'json_encode'가 null을 반환하기 때문입니다. utf-8 만 지원됩니다. –

+0

['json_last_error()'] (http://php.net/manual/en/function.json-last-error.php)를 사용하여 JSON 오류를 확인하십시오. 아마도 JSON 안에 넣을 수없는 문자가있을 수 있습니다. –

+0

@PraveenKumar. 안녕하세요, 네, 잘못된 형식의 UTF-8 문자가 있습니다. 이 오류를 수정하려면 어떻게해야합니까? 내용은 MySQL에 있으며 UTF-8로 설정됩니다. – Apalabrados

답변

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);