当前位置:  开发笔记 > 编程语言 > 正文

JQuery Ajax调用提供404'资源未找到'错误,但普通URL调用很好

如何解决《JQueryAjax调用提供404'资源未找到'错误,但普通URL调用很好》经验,为你挑选了2个好方法。

在我的ASP.NET MVC项目中使用JQuery调用时,我遇到了一个奇怪的问题.我发现Ajax调用给出404(资源未找到错误).但是当我使用通常的URL GET调用时,我可以毫无问题地成功调用服务器.知道为什么会这样吗?

这是我的ASP.NET MVC代码

public class ViewRecordController: Controller
{
  public JSONResult GetSoftwareChoice(string username)
  {
     return Json(username);
  }
}

这是我的JQuery代码:

$(function() {
$("#username").click(function() {
        $.getJSON("ViewRecord/GetSoftwareChoice", {username:'123'},
    function(data) {
        alert(data);
    });
    });
});

上面的JQuery给了我404错误.ViewRecord/GetSoftwareChoice就AJAX调用而言,显然在服务器上找不到.

但是,如果我在我的网络浏览器中输入:

http://myapp/ViewRecord/GetSoftwareChoice?username=123

那没有问题.

事实上,这非常奇怪.

如果您有兴趣,以下是我的路线:

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

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
    );

}

编辑:我进入我的代码,发现URL调用ViewRecord/GetSoftwareChoice?username=123.

相关问题:选择Form中的元素不能在JQuery中工作



1> John G..:

您可能想尝试使用UrlHelper,而不是对网址进行硬编码:

$(function() {
    $("#username").click(function() {
        var url = '<%= UrlHelper.Action("GetSoftwareChoice", "ViewRecord") %>';
        $.getJSON(url, {username: '123'}, function(data) {
            alert(data);
        });
    });
});


天哪......这太糟糕了.我总是将我的javascript保存在单独的.js文件中,以便于阅读..

2> Graviton..:

我通过使用FireBug向我展示由JQuery生成的请求来解决此问题.令我惊讶的是,生成的网址是

http://localhost/ViewRecord/ViewRecord/GetSoftwareChoice?username=123

对于JSON调用:

$(function() {
$("#username").click(function() {
        $.getJSON("ViewRecord/GetSoftwareChoice", {username:'123'},
    function(data) {
        alert(data);
    });
    });
});

所以我只需将$.getJSON线路更改为

$.getJSON("GetSoftwareChoice", {username:'123'},

或者,使用正斜杠:

 $.getJSON("/ViewRecord/GetSoftwareChoice", {username:'123'},


....或"/ ViewRecord/GetSoftwareChoice".即使您不包含主机名,前导斜杠也表示绝对路径
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有