1

Cakephp を使用して、最初の API ベースのシステムをセットアップしました。たとえば、ブラウザ内で次のように設定しました。 domain.com/cms/blogs は次のように JSON を返します。

[{"id":"2","name":"サンプル ニュース アイテム 002","slug":

ただし、AJAX を介してこの同じ URL を呼び出すとすぐに、コードは次のようになります。

{"blogs":[{"id":"2","name":"Sample News Item 002","slug":

私の見解では、コードを次のように設定したためだと思います

echo json_encode($blogs);

しかし、JAX 経由で呼び出されると、別のビューが使用されますか? これは正しいですか?もしそうなら、ajaxが私のブラウザビューと同じものを返すようにする解決策は何ですか?

app/View/Blogs/json/index.ctp内に同じビュー コード ( echo json_encode($blogs); ) を追加しようとしましたが、違いはないようです。

// コントローラーコード

    public function index($slug = NULL) 
    {
    $this->layout = null;
    $this->response->type('json');

        $cond = array('Blog.online' => 1);

        if(isset($slug))
        {
            $cond[] = array('Blog.slug' => $slug);
            $this->set('slug', $slug);
        }


        $blogs = $this->Blog->find('all', array('conditions' => $cond));
        $blogs = Set::extract('/Blog/.', $blogs);
        $this->set(array(
            'blogs' => $blogs,
            '_serialize' => array('blogs')
        ));

        return json_encode($blogs);
}

ありがとうございました

4

1 に答える 1

1

ビューファイルをレンダリングしていません。コントローラーはここでjsonデータを返すだけです。

$this->autoRender = false;コントローラーコードを追加するだけです。

お役に立てれば。

于 2013-08-27T04:59:41.800 に答える