我已将 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下拉列表中选择“澳大利亚”,则在城市选择下拉列表中除“悉尼”和“墨尔本”之外的其他选项将被删除。
你能帮我解释一下jQuery代码是怎样的。我无法将$ city_select数组传递给jQuery。
答案 0 :(得分: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/
希望得到这个帮助。
哎呀,我发现我完全忽略了“聪明”,对不起。但仍然希望这可以帮助你。答案 1 :(得分:0)
如上所述,您可以使用带有JSON数据序列化的ajax请求。另一方面,您可以省略ajax请求,并使用$.data
函数,将data-<smth>
属性添加到某个特定元素或正文。此datat元素的值可能类似于:
BASE64_ENCODE(json_encode($数据))
然后在jquery脚本中使用$('<elem>').data('<smth>')
并使用http://ntt.cc/2008/01/19/base64-encoder-decoder-with-javascript.html和JSON.parse等解码它。