2017-02-07 16 views
0

私はデータの書式設定と少し混乱しています。私はJQueryとHaystackの両方のドキュメントを無駄なく試しました。Django Haystackオートコンプリートjquery書式設定

私はすでにセットアップの自動補完を持っている、と私は入力したとき:

autocomplete/?search=foo 

を結果は次のとおりです。

{"results": ["foo1", "foo2", "foo3", "foo4", "foo5"]} 

私はこれを取得し、そのようにはJQueryオートコンプリートのソースとしてそれを使用しようとすると:

$('#autocomplete').autocomplete({ 
    source: function (request, response) { 
     $.getJSON("/autocomplete/?search=" + request.term, function (data) { 
      response(data); 
     }); 
    } 
}); 

結果は表示されていません。

私はそうのような変数を作成した場合:

x = ["foo1", "foo2", "foo3", "foo4", "foo5"]; 

とそのようにようにそれを呼び出す:

$("#autocomplete").autocomplete({ 
    source: x, 
}); 

をそれは完全に正常に動作します。

明確にするために、私はがHaystackから、xのような変数名であることを理解しています。問題は、JQueryで動作させることができないということです。私はSOの多くの質問を見ましたが、解決策を見つけることができませんでした。

ある方向を探しています。

答えて

0

デバッガをチェックして、データが正しく送信されたことなどを確認した後など、私は解決策を見つけることができました。

値を配列に格納してからJQueryオートコンプリート関数に戻す必要がありました。基本的には

は:

$('#autocomplete').autocomplete({ 
source: function (request, response) { 
    $.getJSON("/autocomplete/?search=" + request.term, 
    function (data) { 
     var array = new Array(); 

     response($.map(data, function (value, key) { 
      array = value; 
      return array; 
     })); 
    }); 
}, 
minLength: 1, 
}); 

私はまだ理由を理解していないが、私は推測しているDjangoは、むしろ単純な配列やリストよりも、それのルックスで辞書を返します。 Dictはキーと値を持っているので、私の場合は値を取得し、それをオートコレクトの正しい入力として動作させるために配列に配置する必要があります。

関連する問題