JSON 回调未被调用

发布于 2024-12-05 03:18:41 字数 1695 浏览 2 评论 0原文

以下代码在 v1.3 中有效,但在 1.4 中无效,我似乎无法弄清楚问题是什么。我正在从省份 ddl 中选择构建一个城市 ddl。我正在使用 ASP.NET MVC 2

服务器上的函数被调用并构建正确的列表,但当它返回时,它永远不会进入回调函数。我已经设置了一些警报,但没有接到电话。除了 getJSON 之前的那个

有人知道我做错了什么吗?

$(函数(){

 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

The following code has worked in v1.3 but not 1.4 I can't seem to figure out what the issue is. I'm building a cities ddl from a selection from the province ddl. I'm using ASP.NET MVC 2

The function on the server gets called and it builds up the correct list, but when it returns it never steps into the callback function. I've put in some alerts, and the don't get called. except for the one before the getJSON

Anyone know what I'm doing wrong?

$(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);
         });
     });
 });

});

in the controller

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);
        }

thanks

TR

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深海少女心 2024-12-12 03:18:41

来自 api.jquery.com

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

From api.jquery.com

Important: As of jQuery 1.4, if the JSON file contains a syntax error, the request will usually fail silently. Avoid frequent hand-editing of JSON data for this reason. JSON is a data-interchange format with syntax rules that are stricter than those of JavaScript's object literal notation. For example, all strings represented in JSON, whether they are properties or values, must be enclosed in double-quotes. For details on the JSON format, see http://json.org/.

缱倦旧时光 2024-12-12 03:18:41

感谢大家的帮助。事实证明我需要将 JsonRequestBehavior.AllowGet 添加到我的返回语句中

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

*叹息

thanks for all the help folks. turns out I needed to add in JsonRequestBehavior.AllowGet to my return statement

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

*sigh

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文