使用end_Json_Encoder :: encode在Zend Controller中传递Object时的HTML响应

时间:2012-04-03 10:39:09

标签: json zend-framework jquery

我在这个案例中遇到两个问题:
我想传递一个我在Zend Controller中创建的JSON对象

public function exampleAction() {
    $answers = array();
    for($i = 0 ; $i < 3 ; $i++)
     {
                $answer = new Answer();
                $answer->answer_id = 5 ; // for example
                $answer->thanked = 'true';// for example
                $answers[] = $answer;
     }

    echo Zend_Json_Encoder::encode($answers);
}

Jquery Post功能是:

 $.post(
      "/memberactions/getthanks/",
      {values:values},
        function(res){   
           alert(123);     
        } 
      , 'json')

第一个问题
为什么返回响应是HTML?响应必须是JSON?

第二个问题
HTML响应就像这样

[{"__className":"Answer","thanked":"true","answer_id":"5"}]

如何做出这样的回复:

 - answer 
     thanked : true
     answer_id : 5

作为 JSON对象,没有 __ className:“回答”(在响应中有类名是否有害?)

1 个答案:

答案 0 :(得分:1)

  1. 您是否已禁用布局,viewRenderer等?此外,您应该发送适当的标头。您可以使用JSON操作助手一次完成所有这些操作:

    $this->_helper->json($answers);

  2. 您可以在toArray()中提供Answer方法,该方法会返回一系列相关属性,然后在您的操作中使用它:

    $answers[] = $answer->toArray();