.net mvc $.ajax url一直错误,跳转不到相应的返回JsonResult的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net mvc $.ajax url一直错误,跳转不到相应的返回JsonResult的方法相关的知识,希望对你有一定的参考价值。

前台方法:

$.ajax(
url: "/Chart/GetChartDate",
contentType: "application/json;charset=UTF-8",
type: "Get",
dataType: "json",
success: function (data)
alert("成功!");
,
error: function (data)
alert("失败!");
alert(data.responseText);


后台方法:
[HttpGet]
public JsonResult GetChartDate()

..............
return Json(list, JsonRequestBehavior.AllowGet);


目前一直无法跳转到后台的GetChartDate方法,alert(data.responseText)抛出的是整个html页面,不是想要的json。

参考技术A 你仔细看,抛出的整个页面,就是错误信息。另外,把contentType 删掉。 参考技术B 有些时候url需要控制器的名字,有些时候不需要。我也不是很清楚为什么,我的很多问题就是这样子解决的,希望能帮到你。你可以试一下url: "GetChartDate",

ASP.net MVC 5 路由:加载基本 url 时出现 ajax 错误,但在最后添加 home/Index 时有效

【中文标题】ASP.net MVC 5 路由:加载基本 url 时出现 ajax 错误,但在最后添加 home/Index 时有效【英文标题】:ASP.net MVC 5 routing: ajax error on loading base url but works when adding home/Index on the end 【发布时间】:2019-06-25 20:33:28 【问题描述】:

如果最后没有 /Home,我的项目的基本 url 将无法工作,它会返回一个 ajax 错误。如何确保在没有 Home/Index 的情况下输入基本 url,它会在不返回错误的情况下工作?

我可以看到在服务器端 GetTaskLog 正在返回 404 not found 错误。 GetTaskLog 是我的家庭控制器中的一个函数,用于从数据库中检索数据。当我将 /home 添加到 url 时,GetTaskLog 工作正常。它检索数据并且没有错误。

public static void RegisterRoutes(RouteCollection routes)
    
        routes.IgnoreRoute("resource.axd/*pathInfo");

    routes.MapRoute(
            name: "Default",
            url: "controller/action/id",
            defaults: new  controller = "Home", action = "Index", id = UrlParameter.Optional 
        );
    

阿贾克斯:

"ajax": 
            "url": "../Home/GetTaskLog",
            "type": 'POST',
            "content-type": "application/json; charset=utf-8",
            "processData": false,
            "dataType": "json",
            "headers": "headers",
            "data": "window.JSON.stringify(obj)",

$('input[name=__RequestVerificationToken]').val() , “传统”:是的, “dataSrc”:函数(数据) 返回 JSON.parse(data); , ,

【问题讨论】:

请指定您调用 AJAX 请求的错误详细信息和库,因为 AJAX 似乎是从 DataTables 或使用 "ajax" 作为选项参数的类似库请求的。 错误只是说 ajax 错误,没有进一步的细节。但是我可以看到在服务器端 GetTaskLog 正在返回 404 not found 错误。 GetTaskLog 是我的家庭控制器中的一个函数,用于从数据库中检索数据。当我将 /home 添加到 url 时,GetTaskLog 工作正常。它检索数据并且没有错误 【参考方案1】:

route.MapRoute 中的默认值表示如果应用程序在 url 上没有 controller/action/id 之类的内容,它将返回到 Home/Index。 所以你需要更改默认参数

【讨论】:

将默认值更改为空字符串还是干脆去掉默认值行? @JoeJoeJoe,您可以去掉默认行,在这种情况下,如果找不到 url,您的应用程序将返回 404 错误。但是您可以将默认值更改为任何其他 url,例如 MyApp/ShowNotFound 如果您希望人们被重定向到此 url,以防他们请求不存在的 url 对不起,我不明白。我不确定我应该怎么做才能使基本 url 正常工作而不在末尾添加 home/index。基本网址确实打开了默认页面,但我收到了一个 ajax 错误。 您不需要每次都使用 Home/Index。创建新的Controller,让它成为BookController。在 BookController 动作方法 Add 中创建并在 Add 中添加一些逻辑;例如 Add 可以返回字符串“hello”。现在我们有路线预订/添加;在浏览器中打开这个网址,你会看到“你好”这个词。部分“控制器”为了美而切入 url(平台自动执行)。【参考方案2】:

我的问题的解决方案是将ajax url更改为:

 "ajax": 
             "url": "/WTM/Home/GetTaskLog"
         

【讨论】:

以上是关于.net mvc $.ajax url一直错误,跳转不到相应的返回JsonResult的方法的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net MVC 5 路由:加载基本 url 时出现 ajax 错误,但在最后添加 home/Index 时有效

Jquery Ajax,从 mvc.net 控制器返回成功/错误

与 ASP.net MVC 中 Ajax 请求中的错误处理有关的疑问

在Asp.net核心MVC中发布Ajax的问题

使用 ASP.NET MVC 在 JS 文件中为 jQuery 设置 ajax url

ASP.NET MVC 4 URL链接和Ajax帮助函数