Я использую этот контроллер для извлечения данных из моей базы данных, а затем отправляю их как действительные данные JSON, но мой HTTP-ответ, хотя имеет действительный JSON, это текст/html вместо application/json, поэтому getJSON doesn ' т работы. (Если getJSON не должен работать в любом случае?)JSON_ENCODE пытается избежать двойного
public function sendjsonAction()
{
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new GetSetMethodNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$message = $this->getDoctrine()
->getRepository('AcmeStoreBundle:Message')
->findAll();
$serializer = $serializer->serialize($message, 'json');
return new Response($serializer);
}
вот что я получаю, когда я посещаю JSon URL:
[{ "ID": 1, "IAM": 1, "youare «: 2,« lat »: 50.8275853,« lng »: 4.3809764,« msgbody »:« Я видел вас там, что случилось! »}, {« Id »: 2,« iam »: 1,« youare »: 2 , "lat": 50.8275853, "lng": 4.3809764, "msgbody": "Я видел тебя там, что случилось!"}, {"id": 3, "iam": 1, "youare": 2, "lat ": 50.8275853," lng ": 4.3809764," msgbody ":" Я видел тебя там, что случилось! "}, {" Id ": 4," iam ": 1," youare ": 2," lat ": 50.8275853 , «lng»: 4.3809764, «msgbody»: «Я видел тебя там, что случилось!»}, {«id»: 5, «iam»: 1, «youare»: 2, «lat»: 50.8275853, «lng» ": 4.3809764," msgbody ":" Я видел тебя там что-то! "}, {" id ": 6," iam ": 1," youare ": 2," lat ": 50.8275853," lng ": 4.3809764," msgbody ":" Я видел вас там, что случилось! «}]
Так что я еще одна страница, называется "SHOWALL", который имеет следующий Javascript:
$.getJSON('/app_dev.php/sendjson', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.join('')
}).appendTo('body');
});
И результат того, что JS этот HTML:
<ul class="my-new-list">
<li id="0">[object Object]</li>
<li id="1">[object Object]</li>
<li id="2">[object Object]</li>
<li id="3">[object Object]</li>
<li id="4">[object Object]</li>
<li id="5">[object Object]</li>
</ul>
Если я попытайтесь использовать json_encode, тогда все становится еще более беспорядочным. Вот ответ, который я получаю:
"[{\"id\":1,\"iam\":1,\"youare\":2,\"lat\":50.8275853,\"lng\":4.3809764,\"msgbody\":\"I saw you over there what's up!\"},{\"id\":2,\"iam\":1,\"youare\":2,\"lat\":50.8275853,\"lng\":4.3809764,\"msgbody\":\"I saw you over there what's up!\"},{\"id\":3,\"iam\":1,\"youare\":2,\"lat\":50.8275853,\"lng\":4.3809764,\"msgbody\":\"I saw you over there what's up!\"},{\"id\":4,\"iam\":1,\"youare\":2,\"lat\":50.8275853,\"lng\":4.3809764,\"msgbody\":\"I saw you over there what's up!\"},{\"id\":5,\"iam\":1,\"youare\":2,\"lat\":50.8275853,\"lng\":4.3809764,\"msgbody\":\"I saw you over there what's up!\"},{\"id\":6,\"iam\":1,\"youare\":2,\"lat\":50.8275853,\"lng\":4.3809764,\"msgbody\":\"I saw you over there what's up!\"}]"
сэкономленные двойные кавычки ...! Должен ли я добавить параметр json_encode, чтобы он не избежал этих двойных кавычек?
Что случилось с первым выходом? Когда вы используете 'getJSON', он предполагает, что данные JSON и анализируют его соответствующим образом. Но если вы просто посещаете URL-адрес в браузере, он этого не делает. – Barmar
Я редактирую сообщение, чтобы написать, что происходит с первым выходом. –
Я его отредактировал. Я получаю список со строками [object] [object]. –