我正在使用 Razor 语法开发 MVC3 应用程序,但我在使用 AJAX 时遇到了一些问题。
问题如下:我有一个DropDownList
这样定义的类别:
@Html.DropDownList("category_1",
new SelectList(LocalRuckusMVC.Code.StaticDictionaries.BusinessCategories,
"Value", "Text"), "Please Select A Category")
当用户选择一个类别时,应用程序向服务器发出 AJAX 请求,以获取所选类别的适当子类别列表。
jquery 的设置如下:
$('#category_1').change(function () {
$('#category_1').cascade({
url: '@Url.Action("GetSubCats")',
paramName: 'category_id',
childSelect: $("#subCategory_1")
});
});
和级联 jquery 扩展:
(function (jQuery) {
$.fn.cascade = function (options) {
var defaults = {};
var opts = $.extend(defaults, options);
return this.each(function () {
jQuery(this).change(function () {
var selectedValue = jQuery(this).val();
var params = {};
params[opts.paramName] = selectedValue;
jQuery.getJSON(opts.url, params, function (items) {
var options = opts.childSelect.options;
opts.childSelect.empty();
window.console.log(params);
window.console.log(items);
jQuery.each(items, function (index, item) {
//window.console.log(index);
window.console.log(opts.childSelect);
window.console.log(item.Value);
var html = '<option value=\'' + item.Value + '\' >' + item.Text +
'</option>';
opts.childSelect.append(html);
window.console.log(html);
});
});
});
});
};
})(jQuery);
就 AJAX 而言,一切正常,我得到了正确的响应,问题是用户必须在发出 AJAX 请求之前两次选择不同的类别。
我已经使用 firebug 和 fiddler 进行了广泛的调试,并且在第一次选择类别时不会触发 change 事件,或者至少在查看 firebug 或 chrome 开发控制台时它似乎不会触发。
有人有什么想法吗??
非常感谢所有帮助。
糟糕,忘记添加此 jquery 方法更新的 html 选择,所以这里是:
<select id="subCategory_1" name="subCategory_1">
</select>