以下代码在v1.3中有效但不是1.4我似乎无法弄清楚问题是什么。我正在从省ddl的选择中建立一个城市ddl。我正在使用ASP.NET MVC 2
调用服务器上的函数并构建正确的列表,但是当它返回时,它永远不会进入回调函数。我已经发出一些警报,并且不会被调用。除了getJSON之前的那个
任何人都知道我做错了什么?
$(function(){
var provinces = $("#ProvinceId");
var cities = $("#CityId");
provinces.change(function () {
cities.find('option').remove();
alert("hello outside JSON call");
$.getJSON('<%= Url.Content("~/HomeController/Cities") %>', { province: provinces.val(), includeAllPlaceholder : true }, function (data) {
alert("hello");
$(data).each(function () {
alert("hello 2");
$("<option value=" + this.Value + ">" + this.Text + "</option>").appendTo(cities);
alert(this.Value + ":" + this.Text);
});
});
});
});
控制器中的
public JsonResult Cities(string province, bool includeAllPlaceholder)
{
List<SelectListItem> items = new List<SelectListItem>();
int provinceId;
if (int.TryParse(province, out provinceId))
{
var values = ReferenceTableService.CitiesInProvince(provinceId).Where(f => includeAllPlaceholder || (includeAllPlaceholder == false && f.IsAllPlaceholderEntry == false)).ToList();
values.Sort();
items.Add(new SelectListItem { Value = "", Text = Resources.Global.Generic.ddlSelectValue });
items.AddRange(values.Select(f => new SelectListItem { Value = f.Id.ToString(), Text = f.Name }));
}
return Json(items);
}
感谢
TR
答案 0 :(得分:1)
重要提示:从jQuery 1.4开始,如果JSON文件包含语法错误,则请求通常会以静默方式失败。出于这个原因,避免频繁手动编辑JSON数据。 JSON是一种数据交换格式,其语法规则比JavaScript的对象文字符号更严格。例如,JSON中表示的所有字符串,无论它们是属性还是值,都必须用双引号括起来。有关JSON格式的详细信息,请参阅http://json.org/。
答案 1 :(得分:1)
感谢所有帮助人员。结果我需要在JsonRequestBehavior.AllowGet
添加到我的返回语句
return Json(items); => return Json(items, JsonRequestBehavior.AllowGet);
*叹