0

プログラムに動的オートコンプリートを実装しようとしました。最初の入力後、完全に機能しています。ただし、最初の試行に対する提案は表示されません。ただし、サーバーはオートコンプリートに必要なソースに応答しています。これが私のコードです。

       $('.autocomplete').live('keyup', function(){
        $this = $(this);
        var search = $this.val();
        $.ajax({
            url:'/package/index/search/keyword/'+search+'/format/json',
            async: false,
            success: function(res){
                //console.log(res.options);
                //console.log(res.defined_ids);
                staticObject = res.defined_ids;
                $this.autocomplete({
                    source: res.options
                });
            }
        });            
    });

サーバー側のコードは

    $keyword = $this->_getParam('keyword');
    $elementDetailModel = new Package_Model_ElementDetail();
    $arr = $elementDetailModel->searchElementDetail($keyword);
    $this->view->options = $arr['options']; // returns in the format array("test2","my new test", "night stay in delux room")
    $this->view->defined_ids = $arr['defined_ids']; // returns in the format array(21::21=>"test2", 22::22=>"my new test", 24::24=>"night stay in delux room")

コンソールで defined_ids とオプションを firebug に記録したとき、テキスト フィールドに「t」と入力すると、次の応答が返されました。
オプション:

[「test2」、「私の新しいテスト」、「デラックス ルームでの宿泊」]

定義済み ID:

Object { 21::21="test2", 22::22="新しいテスト", 24::24="デラックス ルームでの宿泊"}

どんな助けもかなりのものです。前もって感謝します。

4

2 に答える 2

0

ファイアバグから表示される形式は、JSONの形式ではありません。これは配列であり、インデックスを使用してアクセスされます。

出力を表示するときは、json_encode()最初に配列を確認してから表示してください。

たとえば、質問に関しては、最終的な配列は次のようになります。

$array['options'] = array("test2", "my new test", "night stay in room");
//Then you should echo the encoded the array to json

echo json_encode($array);

次に、ビューがこのリクエストでオフになっていることを確認します。

于 2012-04-15T10:29:24.583 に答える
0

サーバー側のコンテキストを指定するのを忘れた可能性があります。コントローラーの_init()メソッドに、次を追加します。

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('actionName', 'json')
            ->initContext();

actionNameアクションコントローラー名を必ず置き換えてください。

その後、$this->view->options = $arr['options']自動的に有効な json 形式に変換されます。

AjaxContext の詳細については、こちらのマニュアルを参照してください。

于 2012-04-15T17:32:10.623 に答える