Успех Zend Json_Encode и .getJson не вызывается? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть скрипт, который я использую для возврата JSON из PHP с использованием Zend Framework.

Это то, что я получаю обратно: [] {"Test": "Tester"}, но функция успеха в jQuery не вызывается. Разве json не должен быть [{"Test": "Tester"}]?

В моем контроллере я сделал это:

echo Zend_Json::encode(array("Test" => "Tester"));

Клиент Js:

  $.getJSON("/entry/get-projects",
    {
        "id": 1,
        "format": "json"
    },
    function(data, textStatus, jqXHR) {

        alert("win");
    }
    );

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

В вашем действии, которое обрабатывает вызов json

$callback = $this->getRequest()->getParam('callback');
echo $callback . '(' . Zend_Json::encode(array('key' => 'value')) . ')';

В вашем JS

var map = {
    'key1'  : val1,
    'key2'  : val2
};

$.post('/some/ajax-action/', map, some_callback_function, 'json');

В противном случае вы всегда можете попробовать:

http://php.net/manual/en/function.json-encode.php
echo json_encode(array('key' => 'value'));
0 голосов
/ 05 сентября 2011

Я получил его на работу, используя $this->_helper->json(); как упомянуто здесь: http://www.stoimen.com/blog/2010/08/13/returning-json-in-a-zend-controllers-action/

Не уверен, что есть лучший способ. Например: в Propel есть отличный метод toJSON, который возвращает код json из результата вашего запроса. Было бы плохо преобразовать его в массив с помощью propel, а затем преобразовать его в JSON с Zend.

...