0

このように、 selection.phpの 2 つの配列を smartyに割り当てました。

$country = array(
         '1' => 'Japan',
         '2' => 'Australia',
         '3' => 'India'
            );      
$city = array(
            '1' => array(
                 '10' => 'Tokyo',
                 '11' => 'Osaka'
               ),
        '2' => array(
                 '20' => 'Sydney',
                 '21' => 'Melbourne'
               ),
        '3' => array(
                 '30' => 'Mumbai',
                 '31' => 'Delhi'
               )
        );      
$smarty->assign('country_select',$country);
$smarty->assign('city_select',$city);
$smarty->display('selection.tpl');

selection.tplのコードは次のようになります。

<div>{html_options id='country_select' options=$country_select}</div>
<div>{html_options id='city_select' options=$city_select}</div>

ここでやりたいことは、country_select ドロップダウンで国を選択すると、city_select ドロップダウンの項目が国の選択に従って変更されるという jQuery 関数を作成することです。つまり、country_select ドロップダウンで「Australia」を選択すると、city-select ドロップダウンで「Sydney」と「Melbourne」以外のオプションが削除されます。

jQueryコードがどうなるか教えてください。$city_select 配列を jQuery に渡すことができませんでした。

4

2 に答える 2

0
$country = array('1' => 'Japan', '2' => 'Australia', '3' => 'India');    
$city = array(
    '1' => array('10' => 'Tokyo', '11' => 'Osaka'),
    '2' => array('20' => 'Sydney', '21' => 'Melbourne'),
    '3' => array('30' => 'Mumbai', '31' => 'Delhi')
);
$data = array('countries' => $country, 'cities' => $city);

echo json_encode($data);

json_encode を使用して、出力を JSON にエコーします。結果は次のようになります。

{"countries":{"1":"Japan","2":"Australia","3":"India"},"cities":{"1":{"10":"Tokyo","11":"Osaka"},"2":{"20":"Sydney","21":"Melbourne"},"3":{"30":"Mumbai","31":"Delhi"}}}

次に、jQuery ajax を使用して PHP をフェッチし、JSON を使用して通信する必要があります。

$.get("selection.php", function(result) {
    //code here
}, "json");

私は Fiddle でサンプル コードを書きました。javascript は上記の jQuery AJAX の真ん中に配置する必要があります。 http://jsfiddle.net/sing0920/X3dvG/

この助けを願っています。

おっと、ここで「スマート」を完全に無視していることがわかりました。申し訳ありません。しかし、それでもこれがあなたに役立つことを願っています.

于 2013-03-10T10:14:36.757 に答える
0

上記のように、JSON データのシリアル化で ajax リクエストを使用できます。一方、ajax リクエストを省略し、functiontion を使用して、特定の要素またはボディに属性を$.data追加することもできます。data-<smth>この datat 要素の値は、base64_encode(json_encode($data)) の$('<elem>').data('<smth>')ようなもので、jquery スクリプトで使用し、http://ntt.cc/2008/01/19/base64-encoder- のようなものでデコードします。 Decoder -with-javascript.htmlおよび JSON.parse。

于 2013-03-10T10:34:12.677 に答える