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 中的第二个数组。您可以替换“.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

第一步:将文件读入字符串并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 绑定。

于 2012-06-08T05:12:30.843 回答