使用PHP Zend Framework 2.0.2,我在AJAX調用後返回JSON數據。顯然,Internet Explorer 9想要下載數據而不是將其返回到調用Javascript方法。如何告訴ZF2的JsonModel返回text/plain而不是application/json?
像this one和this one這樣的帖子說使用Content-Type: text/plain
而不是Content-Type: application/json
,但我該如何使用ZF2的JsonModel?我是新來的...
我想我必須在setOptions()
數組中設置一些東西,但什麼?
public function testJsonAction()
{
$jsonResponse = new JsonModel(array('success' => false));
$jsonResponse->setOptions(array(
// ** Should I put something here? What? **
));
return $jsonResponse;
}
我試圖使用這些:
$this->getResponse()->getHeaders()->addHeaderLine('Content-Type', 'text/plain');
$this->getResponse()->getHeaders()->addHeaderLine('Content-Disposition', 'inline; filename="textdata.json"');
,但它不會在響應頭更改HTTP內容類型:
Key Value
Response HTTP/1.1 200 OK
Content-Type application/json
Server Microsoft-IIS/7.5
X-Powered-By PHP/5.3.13
Set-Cookie ZDEDebuggerPresent=php,phtml,php3; path=/
Content-Disposition inline; filename="textdata.json"
X-Powered-By ASP.NET
Date Wed, 10 Oct 2012 13:19:42 GMT
Content-Length 17
感謝您的幫助!
謝謝,但沒有奏效,它仍然是'應用程序/ json'。我在你提到的函數中設置了斷點,並且在附加的事件被調用後我看到它被調用......並且在那之後,標題包含3倍的Content-Type鍵。 – dstj
再次嗨!我嘗試將事件函數附加到'MvcEvent :: EVENT_FINISH'事件上,而不是在它的工作!你認爲會有什麼理由不這樣做嗎? – dstj
嗨,實際上我只是在ViewModel中測試我的代碼,它的工作原理是,現在我測試了JsonViewModel,發現事件優先級不夠小,我將其調整爲-10000,並且它工作正常。 我沒有使用EVENT_FINISH,因爲JSONStrategy在EVENT_RENDER中改變標題,只是爲了減少入侵。 – AlloVince