现在json响应看起来像
["AG","ANTIGUA AND BARBUDA","AU","AUSTRALIA","BR","BRAZIL","CA","CANADA"]
我可以成功
["AG,ANTIGUA AND BARBUDA","AU,AUSTRALIA","BR,BRAZIL","CA,CANADA"]
如果更容易使用或任何其他风格。
我需要的是将它分成两个变量,一个用于县代码,另一个用于国家名称
...success: function( json ) {
$.each(json, function(i, value) {
$('#country').append($('<option>').text(value).attr('value', value));
};
});
现在同一个变量值和选项名称我需要将国家/地区代码放在选项中,将国家/地区名称放在变量中。
答案 0 :(得分:4)
为什么不首先将它们作为JSON对象返回?像
这样的东西[{"ID":"AG", "Text":"ANTIGUA AND BARBUDA"},{"ID":"AU", "Text":"Australia"}]
然后你可以做类似
的事情$.each( result, function( value ){
$('#country').append(
$("<option>").text(value.Text).attr("value", value.Text)
);
});
修改强> 上面的代码假设您已经将从服务器发送的数据转换为JavaScript数组。有两种方法可以解决这个问题:
答案 1 :(得分:1)
如果您选择第二个选项,可以split字符串
var countries = jQuery.parseJSON(json);
$.each(countries, function(i, value) {
var country = value.split(",");
$('#country').append($('<option>').text(country[1]).attr('value', country[0]));
};
编辑:您需要首先解析JSON字符串,这样您就可以使用Array对象并循环遍历它。请参阅上面的更新代码。
答案 2 :(得分:0)
如果你能做到:
[["AG","ANTIGUA AND BARBUDA"],["AU","AUSTRALIA"],["BR","BRAZIL"],["CA","CANADA"]]
然后你可以用这个:
success: function( json ) {
$.each(json, function(i, value) {
$('#country').append($('<option>').text(value[1]).attr('value', value[0]));
};
});
答案 3 :(得分:0)
如果你想这样做:
var array = ["AG","ANTIGUA AND BARBUDA","AU","AUSTRALIA","BR","BRAZIL","CA","CANADA"];
并使其成为键/值对对象的数组,您可以执行以下操作:
result = [];
for (var i = 0; i < array.length; i = i + 2) {
result.push({ array[i] : array[i + 1]});
}
您最终会在result
中找到相应的内容:
result = [
{ "AG" : "ANTIGUA AND BARBUDA" },
{ "AU" : "AUSTRALIA" },
{ "BR" : "BRAZIL" },
{ "CA" : "CANADA" }
];
更新:如果您只关心将其添加到选择中,您可以这样做:
var array = ["AG","ANTIGUA AND BARBUDA","AU","AUSTRALIA","BR","BRAZIL","CA","CANADA"];
for (var i = 0; i < array.length; i = i + 2) {
// Using this object initializer to build the options has a caching benefit.
$('#country').append($('<option>', {
value: array[i],
text: array[i + 1]
}));
}
对于它的价值,在这种情况下可能可以忽略不计,但这种方法相对较慢。如果您发现性能问题,请考虑使用.detach()
方法在添加选项时将#country
拉出DOM,然后在最后附加回来。