我有以下 jQuery 代码。我能够从服务器 [{"value":"1","label":"xyz"}, {"value":"2","label":"abc"}] 获取以下数据
。如何迭代它并用 id=combobox
$.ajax({
type: 'POST',
url: "<s:url value="/ajaxMethod.action"/>",
data:$("#locid").serialize(),
success: function(data) {
alert(data.msg);
//NEED TO ITERATE data.msg AND FILL A DROP DOWN
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
},
dataType: "json"
});
还有使用 .ajax
和 $.getJSON
有什么区别。
最佳答案
这应该可以解决问题:
$($.parseJSON(data.msg)).map(function () {
return $('<option>').val(this.value).text(this.label);
}).appendTo('#combobox');
这是 ajax
和 getJSON
之间的区别(来自 jQuery documentation ):
[getJSON] is a shorthand Ajax function, which is equivalent to:
$.ajax({ url: url, dataType: 'json', data: data, success: callback });
编辑:需要明确的是,部分问题是服务器的响应返回了一个看起来像这样的 json 对象:
{
"msg": '[{"value":"1","label":"xyz"}, {"value":"2","label":"abc"}]'
}
...所以需要使用 $.parseJSON()
手动解析 msg
属性。
关于jquery用json数据填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952284/