在问here的问题中,我看到以下代码可用于向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);
});
}
});
};
有人可以告诉我,json应该是什么格式,在php服务器端。比如,应该如何创建,以便“$('#myselect')正确解析它。append(optionHtml);” ??
答案 0 :(得分: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);
});
}
答案 1 :(得分: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一样。)
答案 2 :(得分: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/
验证