【发布时间】:2015-12-29 09:12:00
【问题描述】:
在我的 mvc5 项目中应用 ajax 请求时,我遇到了一个非常奇怪的问题。这是我在 Index.cshtml 中的代码:
$(document).ready(function () {
for (var i = 0; i < 3; i++) {
$.ajax({
type: "GET",
url: "Home/LoadTodayStories",
data: { pageIndex: blockNumber, pageSize: 8, index: i },
dataType: 'html',
async: false,
beforeSend: function () { $("#loadingDiv").show(); },
complete: function () { $('#loadingDiv').hide(); },
success: function (data) {
$('.today-spl').append(data);
},
error: function (e) { alert(e.responseText); }
});
}
});
当我刚刚运行我的项目并且没有包含控制器名称和操作方法的完整 url 时,此代码可以完美运行。换句话说,如果 url 只是“http://localhost:52572/”,则代码可以工作,但是当我包含控制器名称和操作方法(例如“http://localhost:52572/Home/Index”)时,我收到错误消息:
找不到资源。 说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/Home/Home/LoadTodayStories
附:我知道错误是什么,我需要从
更改我的 ajax 请求 url 部分url: "Home/LoadTodayStories",
到
url: "LoadTodayStories",
但是在更改这部分之后,代码开始使用 url “http://localhost:52572/Home/Index” 而不能使用“http://localhost:52572/”。有谁知道如何在这两种条件下完成这项工作?
我的 RouteConfig.cs:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
【问题讨论】:
-
显示您的路线配置。
-
@Ric 请查看我编辑的问题
-
您是否尝试将
contentType设置为contentType: "application/json; charset=utf-8"?同时显示你的LoadTodayStories方法 -
@Ric 这应该如何影响代码?内容类型仅指示您要发送到服务器以进行 ajax 请求的数据类型。
-
我相信默认的内容类型不是
application/jsonapi.jquery.com/jquery.ajax 而你发送的是json
标签: .net ajax asp.net-mvc asp.net-mvc-5