Lots of demos out there for dependent option lists... this is the approach that I like. Basically...
- create ALL of your options as a JSON object (for example, in MVC you could render this out via Html.Raw(JsonConvert.SerializeObject(Model.Products, Formatting.None, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }));)
- in JavaScript, as values change, query this JSON object