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

要与您展示的 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>"]

...其中每个数组元素都是单个<option>元素的适当 html。

(也就是说,与其他问题中显示的第一个 JSON 完全相同。)

于 2013-02-10T07:04:47.053 回答
0

JSON 是键值/名称对的集合。这些可以是对象或数组或两者的形式。

让我假设您想要有两个下拉列表,第一个下拉列表包含国家,第二个下拉列表包含该特定国家/地区的城市。在这种情况下,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 回答