0

ここで尋ねられた質問では、次のコードを使用して SELECT にオプションを追加できることがわかります

function getResults(str) {
  $.ajax({
        url:'suggest.html',
        type:'POST',
        data: 'q=' + str,
        dataType: 'json',
        success: function( json ) {
           $.each(json, function(i, optionHtml){
              $('#myselect').append(optionHtml);
           });
        }
    });
};

PHPサーバー側でjsonの形式を教えてください。同様に、 「$('#myselect').append(optionHtml);」によって正しく解析されるように、どのように作成する必要がありますか? ??

4

3 に答える 3

4

そのコードは、基本的にマークアップ付きの文字列の配列であるこの JSON を解析します。

[
    "<option value='...</option>",
    "<option value='...</option>",
    "<option value='...</option>",
    ...
]

ただし、これはJSONの目的をほとんど無効にします。


JSON にデータのみが含まれている場合は、より良い結果が得られます。

{
    "text1" : "value1",
    "text2" : "value2",
    "text3" : "value3",
    ...
}

コードを解析して要素を作成します。そうすれば、JSON は軽量になります。

success: function( json ) {
    var mySelect = $('#myselect')
    $.each(json, function(key,val){
        $('<option/>',{
            value : val //i like this method of making elements better
        })              //because string concatenation is messy
        .text(key)
        .appendTo(mySelect);
    });
}
于 2013-02-10T07:04:54.097 に答える
0

JSONは、キーと名前のペアのコレクションです。これらは、オブジェクトまたは配列、あるいはその両方の形式にすることができます。

2つのドロップダウンが必要で、最初のドロップダウンには国があり、2番目のドロップダウンにはその特定の国の都市が含まれていると仮定します。この場合、JSON構造は次のようになります。

{
  "<select value='usa'>USA</select>": "<option value='boston'>Boston</option>",
  "<select>FRANCE</select>": "<option value=paris'>Paris</option>",
  "<select>UNITED KINGDOM</select>": "<option value=london'>London<option value=not'>Nottingham</option>",
  "<select>GERMANY</select>": "<option value='munich'>Munich</option>"
}

JSONはhttp://jsonlint.com/で検証されています

于 2013-02-10T07:07:16.697 に答える
0

示した JS で使用するには、JSON を次のような配列にする必要があります。

["<option value='Woodland Hills'>Woodland Hills<\/option>","<option value='none'>none<\/option>","<option value='Los Angeles'>Los Angeles<\/option>","<option value='Laguna Hills'>Laguna Hills<\/option>"]

...ここで、各配列要素は、単一の要素に適した html です<option>

(つまり、他の質問に示されている最初の JSON とまったく同じです。)

于 2013-02-10T07:04:47.053 に答える