2011-05-08 6 views
0

今JSONレスポンスがで作業しやすいか、他のスタイルthas場合、私はそれ2つの変数でjson応答を分離する方法は?

["AG,ANTIGUA AND BARBUDA","AU,AUSTRALIA","BR,BRAZIL","CA,CANADA"] 

作ることができます

["AG","ANTIGUA AND BARBUDA","AU","AUSTRALIA","BR","BRAZIL","CA","CANADA"] 

のように見えます。私は必要なもの

は、2つの変数iのオプションと国の名前で国コードを配置する必要があり、今同じ変数はオプションの値と名前に行く

...success: function(json) { 
    $.each(json, function(i, value) { 
      $('#country').append($('<option>').text(value).attr('value', value)); 
    }; 
     }); 

国名のための他の郡のコードのための1にそれを分離することです変数で。

+1

2つの文字の略語を完全な国名とともに送信していますが、省略形を使用していないようです。使用することを意味しますか、それとも完全に送信しないでください。 – R0MANARMY

答えて

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

私の出力はこのようには見えませんが、それは["[AG、ANTIGUA AND BARBUDA]"、 "[AU、オーストラリア]"、 "[BR、ブラジル]"、 [カナダ、カナダ] "] オプションのタイトルと値の最初の文字" [" – Cleaner

1

をあなたは、このような

var countries = jQuery.parseJSON(json); 
$.each(countries, function(i, value) { 
    var country = value.split(","); 
    $('#country').append($('<option>').text(country[1]).attr('value', country[0])); 

}; 
として文字列を splitすることができます

EDIT:まずJSON文字列を解析する必要があります。 Arrayオブジェクトを使用してループすることができます。上記の私の更新されたコードを見てください。

+0

これは何であるか ' 値と名前の2文字の国コード – Cleaner

+0

@Crainer、私の更新を参照してください。 – Marko

+0

必ずしも解析する必要はありません。彼は[getJSON](http://api.jquery.com/jQuery.getJSON/)メソッドを使用して自動的にそれを行うことができます。 – R0MANARMY

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) 
    ); 
}); 

EDITのような何かができる: 上記のコードはすでにJavaScriptの配列にサーバーから送信されたデータを変換しまし前提としています。それにアプローチするには、2つの方法があります。

  1. あなたはgetJSONメソッドを使用してデータを要求することができ、jQueryのは、あなたがparseJSON

を使用してデータを自分で解析することができます

  • の戻り値を解析しますどちらのメソッドでも整形式のJSON文字列が使用され、使用するJavaScriptオブジェクトを返します

  • +0

    それはしません – Cleaner

    +0

    @Crainer:何もしませんか? – R0MANARMY

    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

    +0

    あなたの後ろにあるソリューションを提供するように更新されました。 –

    関連する問題