2

作業中のプロジェクトにCodeIgniterを使用しています。

次のようなビューでajax呼び出しがあります:

$.ajax({
    type: 'GET',
    url: 'extra/search/infojson/' + $(this).text().replace(/\s/g, "+");
    success: function(data) {
        /* Do something with that data */
    }

});

infojson'username'のパラメーターを受け取り、検索を実行し、JSONオブジェクトを返すコントローラーのメソッドです。別のビューを作成せずにこのデータを返す方法はありますか?このメソッドは、この1つのページからそのようなデータを返すためにのみ使用されるため、そのためだけに別のビューを作成する必要がある理由がわかりません。私は読んだ_output()ことがありますが、それは私には意味がありませんでした。

4

3 に答える 3

4

これが答えでした:

エコー$this->config->set_item('compress_output', FALSE);の直前に配置して、出力圧縮を無効にします。

ソース:http ://codeigniter.com/forums/viewthread/155810/#784452

于 2012-09-04T21:45:50.167 に答える
1

もちろん。

PHPの関数を使用してデータを返します。ajaxリクエストでデータをブラウザに送り返すためjson_encode()に呼び出す必要はありません。$this->load->view('someview', $data);

class Extra extends CI_Controller{
    function __construct(){
        parent::__construct();
    }

    function search($username){
        $results = your_search($username);
        echo json_encode(array("results" => $results));
    }
}

そしてあなたのjquery:

$.ajax({
    type: 'GET',
    dataType: "json",
    url: 'extra/search/infojson/' + $(this).text().replace(/\s/g, "+");
    success: function(data) {
        if(data.results){
            /* Do something with the results */
        }
    }
});
于 2012-09-04T21:39:53.680 に答える
1

構成ファイルの出力を圧縮する場合は、設定してみてください$config[‘compress_output’] = FALSE;

于 2012-09-04T21:45:33.940 に答える