0

我已经将selection.php中的两个数组分配给 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>

现在我要做的是,编写一个jQuery函数,当我在country_select下拉列表中选择一个国家时,city_select下拉列表中的项目将根据国家选择进行更改。这意味着,如果我在 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 请求,并使用$.data功能,将data-<smth>属性添加到某些特定元素或主体。此数据元素的值可能类似于:base64_encode(json_encode($data)),然后$('<elem>').data('<smth>')在您的 jquery 脚本中使用并使用http://ntt.cc/2008/01/19/base64-encoder-之类的内容对其进行解码带有javascript.html和JSON.parse的解码器。

于 2013-03-10T10:34:12.677 回答