2016-06-10 2 views
0

Я попытался создать объект JSON, содержащий массив. Я хочу получить JSON с помощью AJAX, orginaly:Создайте объект JSON (с массивом) в php

$.ajax({ 
    url: 'data/events.json', 
    type: 'GET', 
}) 

Но я изменить это

$.ajax({ 
    url: 'data/events.php', 
    type: 'GET', 
}) 

JSON мне нужно выглядеть следующим образом:

{ 
    "events": [ 
    { 
    "month": "6", 
    "day": "12", 
    "year": "2016", 
    "title": "Lorem ipsum", 
    "description": "desc..." 
    }, 
    { 
    "month": "6", 
    "day": "9", 
    "year": "2016", 
    "title": "Lorem ipsum", 
    "description": "desc..." 
    } 
    ] 
} 

Я пробовал:

$events = array(
    "events" => array(
     array(
      "month"=> "6", 
      "day"=> "12", 
      "year"=> "2016", 
      "title"=> "Lorem ipsum", 
      "description"=> "desc.." 
     ), 
     array(
      "month"=> "6", 
      "day"=> "9", 
      "year"=> "2016", 
      "title"=> "Lorem ipsum", 
      "description"=> "desc..." 
     ) 
    ) 
); 

echo json_encode($events); 

Но это не работает. Заранее спасибо!

+0

Каков ответ, который вы получаете в ajax? –

+0

Если я чего-то не хватает, этот код действительно дает вам этот JSON ...? –

ответ

1

Как принятый ответ не объясняет, я приведу некоторую информацию. В вашем исходном примере у вас есть статический файл .json, который при обслуживании веб-сервером автоматически будет обслуживаться с типом содержимого application/json. Однако в вашем примере php веб-сервер не будет обслуживать тип содержимого JSON.

jQuery автоматически проанализирует ответ JSON, если он обнаруживает тип содержимого JSON. Вот почему ваш пример php не делает то же самое, что и оригинал, хотя сам контент JSON одинаковый.

Как предлагает Neeraj, вы можете принудительно ввести тип контента, установив dataType. В качестве альтернативы вы можете отправить заголовок JSON на своем php, который повторит ваш оригинальный пример. Рекомендуется установить соответствующий тип контента, поэтому я рекомендую сделать это, даже если вы устанавливаете dataType.

header('Content-Type: application/json'); 
echo json_encode($events); 
1

Я думаю, что ваш массив в порядке, но в АЯКС
Try:

DATATYPE: 'JSON': Это будет конвертировать ваш ответ на объект JSON.

$.ajax({ 
    url: 'data/events.json', 
    type: 'GET', 
    dataType: 'json' 
}); 
+0

Это была проблема. Благодаря! –

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