2011-05-08 26 views
0

眼下JSON响应看起来如何分离两个变量中的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)); 
    }; 
     }); 

现在相同的变量进去期权价值和名字我需要把国家代码选项和国名变量。

+1

它看起来像你沿着两个字母缩写一起发送的全名,但不使用缩写,你的意思是使用它,或者你可以避免一起发送它? – R0MANARMY 2011-05-08 02:51:09

回答

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])); 
    }; 
}); 
+0

我的输出看起来不像这样,我每次写信给json都会双重报价,所以它看起来像 [“[AG,ANTIGUA AND BARBUDA]”,[AU,AUSTRALIA],[BR,BRAZIL],“ [CA,CANADA]“] 并打印选项标题中的第一个字母和值”[“ – Cleaner 2011-05-08 05:04:08

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字符串,所以你可以使用数组对象并通过它循环。看到我上面更新的代码。

+0

”它在做什么“ '' 打破两个字母国家代码的值和名称 – Cleaner 2011-05-08 03:49:57

+0

@Crainer,看我的更新。 – Marko 2011-05-08 04:27:20

+0

他不一定需要解析它,他可以使用[getJSON](http://api.jquery.com/jQuery.getJSON/)方法并自动发生。 – R0MANARMY 2011-05-08 05:37:22

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. 可以使用getJSON方法请求数据和jQuery将解析返回值你
  2. 您可以自己使用parseJSON

分析数据这两种方法都会采用格式正确的JSON字符串,并返回一个JavaScript对象以与之配合使用

+0

它不这样做 – Cleaner 2011-05-08 03:39:44

+0

@Crainer:不做什么? – R0MANARMY 2011-05-08 05:08:38

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时添加选项,然后将其附加回底部。

+0

我做了什么后,我需要最终的解决方案,我不知道jquerry那么好 – Cleaner 2011-05-08 05:07:35

+0

更新后给你解决方案(我认为)。 – 2011-05-08 05:26:40