我有两个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},
.
.
.
]
}
答案 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绑定值。