没有调用JSON回调

时间:2011-09-19 14:52:17

标签: jquery json callback

以下代码在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

2 个答案:

答案 0 :(得分:1)

来自api.jquery.com

  

重要提示:从jQuery 1.4开始,如果JSON文件包含语法错误,则请求通常会以静默方式失败。出于这个原因,避免频繁手动编辑JSON数据。 JSON是一种数据交换格式,其语法规则比JavaScript的对象文字符号更严格。例如,JSON中表示的所有字符串,无论它们是属性还是值,都必须用双引号括起来。有关JSON格式的详细信息,请参阅http://json.org/

答案 1 :(得分:1)

感谢所有帮助人员。结果我需要在JsonRequestBehavior.AllowGet添加到我的返回语句

return Json(items); => return Json(items, JsonRequestBehavior.AllowGet);

*叹