0

私はこの問題を解決するためにすべての時間を費やしていました。

ブートストラップ + typeahead を使用して ajax 呼び出しを機能的にしようとしました。

誰かが私を助けることができれば、それは素晴らしいことです

これは私のHTML部分です:

<div class="control-group">
   <label class="control-label">Parent</label>
   <div class="controls">
     <input type="text" value="" name="parent" id="parent" autocomplete="off"  data-provide="typeahead" />
   </div>

これは私のJS部分です:

$(document).ready(function() {
    $('#parent').typeahead({
        source: function (query, process) {
        return $.ajax({
            minLength: 1,
            url: "/ajax/places/",
            type: 'POST',
            data : 'query='+query,
            dataType: 'json',
            success: function (data) {
                return typeof data == 'undefined' ? false : process(data);
        }
    }); 
        }
    });
});

Ajax が起動し、Jsonが表示されます。ここでは抽出です。

[
         "name": "Aix"
    ,      "name": "Aix"
    ,      "name": "Aix en Diois"
    ,      "name": "Aix en Ergny"
    ,      "name": "Aix en Issart"
    ,      "name": "Aix en Othe"
    ,      "name": "Aix en Provence"
    ,      "name": "Aix la Fayette"
    ,      "name": "Aix les Bains"
    ,      "name": "Aix Noulette"
    ,      "name": "Aixe sur Vienne"
    ,      "name": "Artaix"
    ,      "name": "Baix"
    ,      "name": "Baixas"
    ,      "name": "Benaix"
    ,      "name": "Caix"
    ,      "name": "Caixas"
    ,      "name": "Caixon"
    ,      "name": "Carhaix Plouguer"
    ,      "name": "Chaix"
]

「console.log(data)」を実行すると、すべて問題ないようです。

助けてくれてありがとう!!


次のように、「name」プロパティを削除すると機能します。

[
         "Aix"
    ,      "Aix"
    ,      "Aix en Diois"
    ,      "Aix en Ergny"
    ,      "Aix en Issart"
    ,      "Aix en Othe"
    ,      "Aix en Provence"
    ,      "Aix la Fayette"
    ,      "Aix les Bains"
    ,      "Aix Noulette"
    ,      "Aixe sur Vienne"
    ,      "Artaix"
    ,      "Baix"
    ,      "Baixas"
    ,      "Benaix"
    ,      "Caix"
    ,      "Caixas"
    ,      "Caixon"
    ,      "Carhaix Plouguer"
    ,      "Chaix"
]

しかし今、どうすれば Id と name を使用できますか?

編集:私はこれを使用しましたBootstrap typeahead ajax result format - Example and found solution

他のプロセスで何をしたかをお見せします。

4

2 に答える 2

0

返された「もの」は有効な JSON ではありません。これがおそらく、クライアント側の Javascript がそれを処理できない理由です。

JSON オブジェクトであると仮定すると、次のようになります。

   { "name1": "Aix"
      , "name2": "Aix"
      , "name3": "Aix en Diois"

など。(属性名は一意である必要があることに注意してください。同じ名前の複数の属性を持つことは理論的には合法です。ただし、これは機能しません。これまでに遭遇したすべての JSON パーサーは、対応する値の 1 つを除いてすべて破棄します。)

JSON 配列であると想定される場合は、次のようになります。

   { "Aix"
      , "Aix"
      , "Aix en Diois"

など。または多分:

   [ {"name": "Aix"}
      , {"name": "Aix"}
      , {"name": "Aix en Diois"}

etcetera は、オブジェクトの JSON 配列です。

参照:

于 2013-07-16T10:49:41.753 に答える