2013-03-10 48 views
0

selection.php給Smarty這樣如何從Smarty模板關聯數組傳遞給我分配了兩個數組jQuery的

$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

http://php.net/json_encode – zerkms 2013-03-10 09:30:27

回答

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"); 

我在小提琴上寫了一個示例代碼,javascript應該放在上面的jQuery AJAX的中間。 http://jsfiddle.net/sing0920/X3dvG/

希望這有助於。

哎呀,我發現我完全忽視了「智者」在這裏,對不起那個。但仍然希望這可以幫助你。

0

您可以使用與JSON數據序列化Ajax請求如上。另一方面,您可以省略ajax請求,並使用$.data函數,將data-<smth>屬性添加到某個特定元素或主體。此數據元素的值可能類似於: base64_encode(json_encode($ data)) ,然後在您的jquery腳本中使用$('<elem>').data('<smth>'),並使用類似http://ntt.cc/2008/01/19/base64-encoder-decoder-with-javascript.html和JSON.parse的內容對其進行解碼。

相關問題