我的东西在Fiddler上工作正常,我得到了理想的结果。 但是,当我通过JQuery AJAx在网页上执行此操作时,它显示为"未找到"。 从某个时候开始,我一直在挣扎,但无法绕开。
我的Controller方法就是这样
[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注册和其他设置就可以了,因为它可以在提琴手中使用。
请帮忙。 谢谢。
当您运行AJAX代码时,它在Fiddler或浏览器请求日志中(例如在Chrome开发者工具中)显示的网址是什么?
我强烈怀疑您的AJAX请求中的网址是罪魁祸首(404-未找到),该请求无法路由到控制器进行处理。
不知道完整的控制器是什么样子,并且如果您在此特定控制器上有RoutePrefixAttribute,我无法说出URL应该是什么。
我建议您在浏览器开发人员工具中监控网络流量(按F12键),然后将失败的POST请求的请求网址与Fiddler中成功的请求的网址进行比较
如果您的网页是作为同一Web项目的一部分在ASP.Net MVC中创建的,则您以后可能希望生成url服务器端,请参阅使用属性路由在Web Api视图中构造url。尽管@Url帮助程序仅在您的.cshtml文件中可用,所以您将无法将JavaScript代码转移到单独的.js文件中。
我可以通过将URL更改为url:"AddDonors",来解决此问题
我有同样的错误。
当您使用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"
});
错误持续存在@henrique
@LakshmanPilaka尝试在Controller Action中将类型更改为string,然后在AJAX中更改为datatype: text并传递如下数据:data :"localDonor="+JSON.stringify(userInput)
@LakshmanPilaka看看这个stackoverflow.com/questions/17370062/
尝试此操作以获取POST数据
var userInput = JSON.stringify({ 'FullName': 'Lakshman', 'Mobile': '9924210053' }),
之前我尝试data: JSON.stringify(userInput)它没有帮助
尝试放置[WebMethod]属性。
[Route("AddDonors/")]
[HttpPost]
[WebMethod]
public dynamic addDonors(localDonor localDonor)
{
return localDonor;
}
希望这有效!
这没有带来任何财富:(