5

CakePHP で JSONP コンテンツを提供したいのですが、それを行う適切な方法は何だろうと思っていました。

現在、この CakePHPガイドに従って、JSON コンテンツを自動的に提供できます。

4

3 に答える 3

5

わかりました、このサイトで解決策を見つけました。基本的に、 afterFilter メソッドを次のようにオーバーライドします。

public function afterFilter() {
    parent::afterFilter();

    if (empty($this->request->query['callback']) || $this->response->type() != 'application/json') {
        return;
    }

    // jsonp response
    App::uses('Sanitize', 'Utility');
    $callbackFuncName = Sanitize::clean($this->request->query['callback']);
    $out = $this->response->body();
    $out = sprintf("%s(%s)", $callbackFuncName, $out);
    $this->response->body($out);
}

それが他の誰かにも役立つことを願っています。

于 2013-02-03T01:21:43.243 に答える
0

CakePHP 2.4 以降では、代わりにこれを行うことができます。

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#jsonp-response

したがって、次のように簡単に書くことができます。

$this->set('_jsonp', true);

関連するアクションで。

または、単に次のように書くこともできます。

/**
 *
 * beforeRender method
 *
 * @return void
 */
    public function beforeRender() {
        parent::beforeRender();
        $this->set('_jsonp', true);
    }
于 2013-10-26T07:00:26.123 に答える