如何从yii中的json文件中读取json数据以进行依赖下拉列表

时间:2012-06-08 04:37:29

标签: json yii

我有两个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},
.
.
.
]
}

3 个答案:

答案 0 :(得分: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中的第二个数组。 你可以替换“.json_encode($ cityarr)。”你的阵列。

我希望这会有用

答案 1 :(得分:1)

我对Yii并不熟悉,但在查找之后,可能最好也是最直接的选择是使用system.web.helpers.CJSON类。

您要做的是首先在JSON文件(country.json或city.json)中读取字符串变量。这不需要是特殊操作;假装你正在阅读文本文件。

然后,使用CJSON.decode( jsonString)方法,该方法将返回包含JSON文件中所有内容的对象。

至于创建一个下拉选项,我不知道你的JSON文件是什么样的,所以我无法帮助你。

答案 2 :(得分:0)

第一步:将文件读入字符串并从文件中获取responsestring。您可以使用文件输入流或任何文件输入流。

第二步:解析它。

 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)
    {

    }

第三步:使用UI绑定值。