JSON数据POST到Web API在Fiddler中工作,但未找到"未找到"来自JQuery AJAX的错误

时间:2016-02-29 17:45:14

标签: c# jquery asp.net json ajax

我的东西与Fiddler合作很好,我得到了理想的结果。但是,当我通过JQuery AJAx在网页上进行此操作时,它会说" Not Found"。我有时会挣扎但是无法绕过。

我的控制器方法就像这样

[Route("AddDonors/")]
[HttpPost]

public dynamic addDonors(localDonor localDonor)
{

            return localDonor;
}

这就是我从网页上打电话的方式

 var userInput = { 'FullName': 'Lakshman', 'Mobile': '9924210053' };


            $.ajax({
                type: "POST",
                url: "/AddDonors",
                data:  userInput,
                error: function (result) {
                    alert(result);
                },
                datatype: "json"
            });

这是模型类

 public class localDonor
    {
        public String FullName { get; set; }
        public String Mobile { get; set; }


    }

API注册和其他设置都很好,因为这适用于fiddler

请帮忙。感谢。

5 个答案:

答案 0 :(得分:2)

我强烈怀疑您的AJAX请求中的 url 是责备(404 - Not Found),请求无法路由到控制器进行处理。

在不知道你的完整控制器是什么样子的情况下,如果你在这个特定的控制器上有一个RoutePrefixAttribute,我就不能说出该网址应该是什么。

我建议您在浏览器开发人员工具中监控网络流量(按F12)并将失败的POST请求的请求网址与Fiddler中成功请求的请求网址进行比较

如果您的网页是作为同一个Web项目的一部分在ASP.Net MVC中创建的,那么您可能希望将来生成url服务器端,请参阅Construct url in view for Web Api with attribute routing。 @Url帮助程序仅在 .cshtml 文件中可用,因此您无法将JavaScript代码转换为单独的 .js 文件。

答案 1 :(得分:1)

我能够通过将网址更改为url: "AddDonors",

来解决问题

答案 2 :(得分:0)

尝试输入[WebMethod]属性。

[Route("AddDonors/")]
[HttpPost]
[WebMethod]
public dynamic addDonors(localDonor localDonor)
{

            return localDonor;
}

希望这有效!

答案 3 :(得分:0)

尝试使用此POST数据

var userInput = JSON.stringify({ 'FullName': 'Lakshman', 'Mobile': '9924210053' }),

答案 4 :(得分:0)

我有同样的错误。

当您使用 ASP.NET 时,请尝试使用@Url.Action帮助程序进行所有AJAX调用。
我不知道原因,但在的某些情况下ASP.NET 将URL作为字符串传递不起作用。
并尝试传递您的数据,如下面的代码
您的修改后的代码应如下所示:

$.ajax({
                type: "POST",
                url: "@Url.Action("AddDonors", "ControllerName")",
                data:  { localDonor: userInput },
                error: function (result) {
                    alert(result);
                },
                datatype: "json"
            });