gpt4 book ai didi

jquery - 使用 getJSON 从 asp.net 获取 JSON 不会返回任何内容

转载 作者:行者123 更新时间:2023-12-01 08:17:57 25 4
gpt4 key购买 nike

在我的 asp.net mvc 项目中尝试使用一点 JSON。我有以下 View :

<asp:Content ID="Content3" ContentPlaceHolderID="NavigationPlaceholder" runat="server">
<script type="text/javascript">
$(document).ready(function () {
alert('loaded');
$.getJSON('/Students/LoadYearRoot', null, function (data, textStatus) {
alert('test');
});
});
</script>
</asp:Content>

和以下 Controller (请注意,我注释掉了我的数据库调用,只是尝试使用字符串。:

public JsonResult LoadYearRoot()
{
GWSSchool school = SchoolHelper.GetSchool();
//List<GWSYear> years = yearRepository.GetAll(school.Id);
List<string> strings = new List<string>() { "first", "second", "third" };
JsonResult result = this.Json(strings);
return result;
}

观察 View ,我收到第一个警报,显示“已加载”,但随后它停止了,并且我从未进入回调函数,我测试了我使用断点击中了 Controller ,因此结果似乎是正确的。

任何想法,我在网上找到的所有示例都与此完全相同,我缺少什么?

最佳答案

默认情况下,JSON 不允许用于您用于 AJAX 请求的 GET 动词 ($.getJSON)。为了启用它,您可以将 JsonRequestBehavior.AllowGet 值传递给 Controller ​​操作中的 Json 方法:

JsonResult result = this.Json(strings, JsonRequestBehavior.AllowGet);

下次当您的某个 AJAX 请求不起作用时,无需直接在 StackOverflow 上发布问题,只需在您最喜欢的浏览器中打开您的 javascript 调试工具(FireFox 中的 FireBug、Google Chrome 中的 Chrome 开发人员工具,我不知道)不知道 IE 是什么 - 事实上不要使用 IE 来开发 Web 应用程序 - 我对 IE 的定义如下:由 Microsoft 开发的 Windows 应用程序,用于在您重新安装操作系统时下载 Web 浏览器)并查看“网络”选项卡。在那里您将看到来自服务器的 AJAX 请求和响应。您还将看到服务器返回的 HTTP 状态代码。只需展开响应并阅读服务器发送给您的错误消息即可。在这种非常具体的情况下,它甚至会告诉您如何解决问题。

关于您的代码的另一个旁注。绝对不要在 ASP.NET MVC 应用程序中硬编码这样的 url:

$.getJSON('/Students/LoadYearRoot', ...

在 ASP.NET MVC 应用程序中处理 url 时,始终且绝对始终使用 url 帮助程序,如下所示:

$.getJSON('@Url.Action("LoadYearRoot", "Students")', ...

这样做的原因是,您的代码不再依赖于您在 Global.asax 中配置的路由,此外,当您将应用程序部署在 IIS 中的虚拟目录中时,它甚至可以工作,在这种情况下,您需要添加应用程序名称。

关于jquery - 使用 getJSON 从 asp.net 获取 JSON 不会返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9267759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com