2

2つのjsonファイルstate.jsonとcity.jsonがあり、yiiでそれらからデータを読み取って、依存するドロップダウンを選択する方法を教えてください。

状態json

{
"sates":
[{"regionid":122,"countryid":254,"region":Alabama},
{"regionid":123,"countryid":254,"region":Alaska},
{"regionid":124,"countryid":254,"region":Arizona},
.
.
.
]
}

シティjsonファイル

{
"city":
[
{"cityid":6836,"countryid":254,"regionid":122,"city":Abbeville},
{"cityid":19061,"countryid":254,"regionid":122,"city":Abernant},
{"cityid":19116,"countryid":254,"regionid":122,"city":Adamsville},
.
.
.
]
}
4

3 に答える 3

2
     Yii::app()->clientScript->registerScript('dropdown', "
    $('#dropdown1').change(listval);    
    function listval()
    {

        var regionid=$('#dropdown1').val();//regionid must be the value of option

            var city=".json_encode($cityarr).";
            for(var i=0;i<city_array_count;i++)
            {

            if(city[i]['regionid']==regionid){
                $('#dropdown2').append( $('<option></option>').val(city[i]['cityid']).html(city[i]['city']));


            }



    }
    ");

$cityarrはphpの2番目の配列です。「.json_encode($ cityarr)」を置き換えることができます。あなたの配列で。

これがうまくいくことを願っています

于 2012-06-08T20:10:11.357 に答える
1

私はYiiに精通していませんが、それを調べた後、おそらく最良かつ最も簡単なオプションはsystem.web.helpers.CJSONクラスを使用することです。

まず、JSONファイル(country.jsonまたはcity.json)を文字列変数に読み込みます。これは特別な操作である必要はありません。テキストファイルを読んでいるふりをします。

次に、CJSON.decode( jsonString)メソッドを使用します。このメソッドは、JSONファイル内のすべてを含むオブジェクトを返します。

そこからドロップダウン選択を作成することに関しては、JSONファイルがどのように見えるかわからないので、そこではお手伝いできません。

于 2012-06-08T04:48:09.413 に答える
0

ステップ1:ファイルを文字列に読み込み、ファイルからを取得しresponsestringます。ファイル入力ストリームまたはそのための任意のものを使用できます。

ステップ2:それを解析します。

 try{
    JSONObject jobj=new JSONObject(response_str);
    JSONArray jarr=jobj.getJSONArray("sates");

    for(int i=0;i<jarr.length();i++)
    {
JSONObject jsonobj=jarr.getJSONObject(i);
//here is required data bind it with some UI or do anything.    
long regionid=jsonobj.getLong("regionid");
    long countryid=jsonobj.getLong("countryid");
    String region=jsonobj.getString("region");
    }

    }
    catch(JSONException e)
    {

    }

ステップ3:UIで値をバインドします。

于 2012-06-08T05:12:30.843 に答える