2012-06-08 1 views
2

나는 두 개의 json 파일 state.json과 city.json을 갖고 있는데 어떻게 yii에서 의존 드롭 다운 선택을 할 수 있습니까?종속 드롭 다운을 만들기 위해 yson의 json 파일에서 json 데이터를 읽는 방법

상태 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}, 
. 
. 
. 
] 
} 
+1

작동 바랍니다. 내가 틀렸다면 나를 바로 잡아라. –

+0

PHP로 파일을 읽고'json_decode' 함수를 사용하면 어떨까요? – Ansari

답변

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

나는 YII에 익숙하지 해요,하지만 그것을보고 후, 아마 최고의 가장 간단한 옵션은 system.web.helpers.CJSON 클래스를 사용하는 것입니다 .

JSON 파일 (country.json 또는 city.json)에서 문자열 변수로 먼저 읽습니다. 이것은 특별한 조작 일 필요는 없습니다. 당신이 텍스트 파일을 읽고 있다고 가정하십시오.

그런 다음 CJSON.decode(jsonString) 메서드를 사용하면 JSON 파일의 모든 내용을 포함하는 개체가 반환됩니다.

드롭 다운 선택을 만들 때 JSON 파일이 어떻게 생겼는지 모르겠으므로 거기에서 도와 드릴 수 없습니다.

+0

나는 이미 json 형식의 데이터를 가지고 있는데 그것을 읽고 사용해야 만한다. –

+0

@BCT 대답을 제대로 읽었습니까? 'CJSON.decode (jsonString)'을 사용하십시오. –

0

1 단계 : 파일을 문자열로 읽고 파일에서 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) 
    { 

    } 

3 단계 : 값을 UI로 바인딩합니다.

관련 문제