2011-02-10 28 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