2009-06-21 3 views
4

Ich verwende die ajax uploader und das Zend-Framework.JSON-Problem (Valums Ajax Uploader mit Zend Framework)

Das Problem ist, wenn ich die JSON-Antwort für die onSubmit verwenden. Mit $this->getHelper('Json')->sendJson($data); erhalte ich nur einen saveas Dialog.

Das Problem ist, dass der Uploader erwartet, dass jede Antwort "text/html" ist, aber der JSON-Helfer "application/json" als Mimetype sendet.

Mit einer üblichen Antwort funktioniert alles gut, aber ich muss einige Informationen zurück zum Skript senden.

Also wie kann ich Zend sagen, dass es jsondata mit dem mimetype "text/html" senden soll?

Antwort

3

Sie können die Antwort mit der response object beeinflussen. Aus Ihrem Controller:

$content = Zend_Json::encode(array('Foo' => 'Nice', 'Bar' => 'Vice')); 
$this->getResponse() 
    ->setHeader('Content-Type', 'text/html') 
    ->setBody($content) 
    ->sendResponse(); 
exit(); 
+0

Das ist nicht die sendJson() aufrufen Aktion Helfer nicht verwendet, aber es gibt keine Optionen für diese Methode. Verwenden Sie Zend_Json :: encode(), um Ihre Daten zu verschlüsseln und senden Sie sie selbst mit dieser Methode. – Kekoa

+0

Dank Kekoa, bekannt und integriert. – karim79

+0

um gültigen JSON-Code auszugeben, müssen Sie Ihre letzte Zeile ändern in: '-> setBody ($ content)' und fügen hinzu: '-> sendResponse(); exit(); 'sonst wird Zend die JSON-Daten mit deinem Standard-Stil umgeben – user63371

1

Noch eine andere Variante

echo Zend_Json::encode(array('result' => true)); 
exit;