2014-10-05 39 views
0

我想要发生的是当我从第一个选择框中选择一个项目时,第二个选择框从parseJSON中填充。JQuery parseJSON并填充第二个选择框

我有2个选择框:#web和#cats

幅:具有(目前)3个选项 - 所有网站(值= 0),网站1(值= 1)和网站2(值= 2)

当我从#web中选择我应该只能得到该特定网站的类别,但是在PHP中我已经考虑过“所有网站”并且它将类别复制到每个网页对象中,但我还添加了“所有网站“的json数组,所以如果重新选择,选择框将重新填充。

这是PHP功能(为了创建JSON):

function catWebMix($user) { 
    $categories = getCategories($user); 
    $webAll = array('ID'=>0, 'WebID'=>'All', 'WebName'=>'All Websites');  
    $webSites = getWebsites($user); 
    array_unshift($webSites,$webAll); 
    $output = array(); 
    foreach ($webSites as $k => $v) { 
     $output[$k] = $v; 
     foreach ($categories as $key => $value) { 
      if ($value['WebID'] == '0') { 
       $value['WebID'] = $v['ID']; 
       $output[$k]['Category'][] = $value;  
      } else if ($value['WebID'] == $v['ID']) { 
       $output[$k]['Category'][] = $value; 
      } 
     } 
    } 
    return array($output, json_encode($output)); 
    exit; 
} 

我分配给Smarty一个变量。

$webCats = catWebMix($user); 
$smarty->assign('webCats', $webCats); 

然后我在JQuery中调用它。这是我的失败尝试创建选择框更改,我不确定如何去做。

<script type="text/javascript"> 
     var obj = $.parseJSON({$webCats[1]}); 
     $('#web').on('change', function() { 
      var web = $(this).val(); 
      $.each(obj, function() { 
       if (web == obj.ID) { 
        $.each(obj.Category, function (i,v) { 
         $('#cats').append("<option>"+v[3]+"</option>"); 
        }); 
       } 
      }); 
     }); 
    </script> 

我想要它做什么:

  • 删除在#cats所有选项属性

  • 重新填充#cats从parseJson数据的基础上,从#web值。 #web value =(第一个)JSON中的ID。

  • 广场Category.ID作为期权价值,并Category.CatTitle文本

JSON数组如下所示:

[ 
    { 
    "ID": 0, 
    "WebID": "All", 
    "WebName": "All Websites", 
    "Category": [ 
     { 
     "ID": "1", 
     "WebID": 0, 
     "CatTitle": "Category 1" 
     } 
    ] 
    }, 
    { 
    "ID": "1", 
    "WebID": "web1", 
    "WebName": "Website 1", 
    "Category": [ 
     { 
     "ID": "1", 
     "WebID": "1", 
     "CatTitle": "Category 1" 
     }, 
     { 
     "ID": "2", 
     "WebID": "1", 
     "CatTitle": "Category 2" 
     } 
    ] 
    }, 
    { 
    "ID": "2", 
    "WebID": "web2", 
    "WebName": "Website 2", 
    "Category": [ 
     { 
     "ID": "1", 
     "WebID": "2", 
     "CatTitle": "Category 1" 
     } 
    ] 
    } 
] 

感谢您的帮助!

回答

0

我做到了!这是我在其他人遇到问题时使用的代码。

<script type="text/javascript"> 
    var webCats = {$webCats[1]}; 
    $('#web').on('change', function() { 
     var web = $(this).val(); 
     $.each(webCats, function (k, o) { 
      if (web == o.ID) { 
       $('#cats option').remove(); 
       $.each(o.Category, function (i, v) { 
        $('#cats').append("<option value=\""+v.ID+"\">"+v.CatTitle+"</option>"); 
       }); 
      } 
     }); 
    }); 
</script> 
相关问题