C# 服务器响应404:找不到本地主机/未定义
我已经搔头好几天了。我在谷歌上搜索也没用。我试图用jquery.ajax从数据库中获取信息,但基于我每次发送的信息(比如一篇帖子和一个get),服务器以一个C# 服务器响应404:找不到本地主机/未定义,c#,jquery,ajax,asp.net-mvc-4,C#,Jquery,Ajax,Asp.net Mvc 4,我已经搔头好几天了。我在谷歌上搜索也没用。我试图用jquery.ajax从数据库中获取信息,但基于我每次发送的信息(比如一篇帖子和一个get),服务器以一个错误404:Not Found响应,并告诉我请求Localhost:1986/undefined,事实并非如此 我确信我所有的文件夹和文件的确切位置是重要的,所以我会尽可能多地包含,如果有必要,请随意要求更多 我的脚本是从另一个脚本复制粘贴和修改的,我必须将其发布到数据库中,这很好,所以为什么这一个没有让我感到困惑: function nex
错误404:Not Found
响应,并告诉我请求Localhost:1986/undefined
,事实并非如此
我确信我所有的文件夹和文件的确切位置是重要的,所以我会尽可能多地包含,如果有必要,请随意要求更多
我的脚本是从另一个脚本复制粘贴和修改的,我必须将其发布到数据库中,这很好,所以为什么这一个没有让我感到困惑:
function nextSlide() {
var articleLink = document.getElementsByTagName("a")[0];
$.ajax({
type: 'POST',
url: "../SlideShow/NextArticle",
data: {
slideID: articleLink.getAttribute("id"),
},
success: function (result) {
$(articleLink).id = result[0];
document.getElementById("articleImage").setAttribute("src", result[1]);
document.getElementById("articleTitle").innerHTML = result[2];
document.getElementById("articleText").innerHTML = result[3];
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
});
}
这是我试图使用的SlideShowController.cs
文件中的方法:
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public JsonResult NextArticle(string slideID)
{
int ID = int.Parse(slideID);
var articles = db.Slides.ToList();
var currentArticle = db.Slides.First(s => s.SlideId == ID);
int articlePosition = articles.IndexOf(currentArticle);
articlePosition = (articlePosition + 1) >= articles.Count() ? 0 : articlePosition + 1;
var nextArticle = articles.ElementAt(articlePosition);
//nextArticle.Article.ArticleText.Substring(0, 50)+"..."
string[] returnParameters = {
nextArticle.SlideId.ToString(),
nextArticle.Image.ImageURL,
nextArticle.Article.ArticleTitle,
nextArticle.Article.ArticleText
};
return Json(returnParameters);
}
SlideShowController.cs
文件位于根目录中名为Controllers
的文件夹中。从根目录/Views/SlideShow
文件夹中的\u SlideShowPartial.cshtml
文件调用脚本。使用@html.Partial()
以下是chrome控制台中出现的错误的屏幕截图:
下面是Views
文件夹中Web.Config文件的内容:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="TIAWebWorkConnect.Models.AppViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
您向服务器发送的url肯定是错误的。请尝试完整的url,或从$.ajax查询中删除url 考虑将T4 MVC引入您的项目中。这将为您提供对MVC操作的强类型访问,并让您避免URL字符串,这看起来像您在这里遇到的问题
删除那些
。
从。/SlideShow/NextArticle
中删除并检查。@HarveySpecter它仍然会抛出相同的错误,还有一个不错的用户名suitsHaha。谢谢最后,一个认识你的人。如果您可以尝试删除此项:[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
并将此项:[HttpPost]
@harveyspespecter也抛出相同错误,请发布完整的控制器代码、web.config,可能还会从浏览器中某个控制台的屏幕上显示此错误。