2011-02-10 30 views
2

我使用PHP +卷曲在我的行动之一,从服务器获取数据。然后我从我的动作中返回数据作为json。Symfony的行动JSON响应

我的动作是这样的

public function executeTest(sfWebRequest $request) 
{ 
    $json = $this->getServerResponse(); // fetches data using CURL 
    $this->getResponse()->setContentType('text/json'); 
    return $this->renderText($json); 
} 

当执行上述动作,所接收的JSON strng是(例如):

{ 'OK':真} 1

如果我改变的最后一行在动作上面 回报$这个 - > renderText(“富”);

返回的JSON是:

{ 'OK':真正}富

如果我改变上面 回报在行动的最后一行$这个 - > renderText( '' );

返回的JSON是:

{ 'OK':真正}

我的问题是:

  1. 为什么被一起显示来自服务器的JSON数据与我的renderText()方法中的文本?

  2. 在哪里“1”追加到JSON数据来自何处?

  3. 如何解决/解决这个问题?

我正在运行的Symfony 1.4.x版在Ubuntu

+0

嗯,我不是专家,但我知道renderText追加其传递的值到任何现有的响应内容,而不是取代它,所以它几乎看起来好像JSON已经存在于你的sfResponse现有的内容,和你”重新添加$ json到它,$ json不是你所期望的。我们可能需要查看getServerResponse()的来源来弄清楚发生了什么...... –

+0

@Matt - 我认为你在正确的轨道上。看起来'getServerResponse'函数设置了响应文本,然后返回true。这说明了附加'1'(渲染真实显示为1),字符串foo和空字符串。所有这些都被追加。 @OP - 你应该真的获得getServerResponse来返回响应,而不是设置它,然后返回true。 –

+0

@Blair是的,这是有道理的。 –

回答

2

从外观上来看,你的问题就出在getServerResponse()。如果没有看到这个功能,不能再帮忙。

+0

是的 - 你说得对。我从curl_exec(它是1)返回返回码。 – rodriguez