【发布时间】:2018-08-07 17:52:28
【问题描述】:
我正在尝试通过 ajax 调用将一些数据传递给 c# mvc 控制器。即使任务应该是直截了当的,我也无法让 mvc 控制器读取我通过 ajax 调用传递的数据....
我已经在我的 MVC 控制器中实现了以下代码
[HttpPost]
public string tt(string o)
{
return o;
}
[HttpPost]
public string tt2(string o)
{
return "lala";
}
我正在从浏览器触发以下 ajax 调用
$.ajax({
url: "/Home/tt2",
type: "POST",
contentType: "application/json;",
data: JSON.stringify({ o: 'asdas'}),
success: function(e){console.log(e+' correct');},
error: function(e){console.log(e+' incorrect');}
});
$.ajax({
url: "/Home/tt",
type: "POST",
contentType: "application/json;",
data: JSON.stringify({ o: 'asdas'}),
success: function(e){console.log(e+' correct');},
error: function(e){console.log(e+' incorrect');}
});
因此,当运行第一个 ajax 调用时,结果是
lala correct
而对于第二个ajax调用,结果是
undefined correct
同时,这些是我尝试过的一些东西
- 在 ajax 调用中添加
dataType: "json", - 将字符串数据从
{o: 'asdas'}更改为'asdas' - 删除
JSON.stringify - 将
charset=utf-8添加到 contentType - 将ajax调用类型和MVC控制器方法从
POST改为GET改为PUT - 将 MVC 控制器方法参数从
string更改为int - 从 ajax 调用中删除
error方法 - 将数据从
data: {o: 'asdas'}更改为data: {"o":"asdas"} - 将数据从
data: {"o":"asdas"}更改为data: JSON.stringify({"o":"asdas"})
我知道简单的字符串或 int 可以作为查询字符串通过 URL 传递,但在传递对象列表时会出现问题..
除此之外,对 URL 的调用是正确的,因为当我在被调用方法中设置断点时,它确实会被触发,但参数始终为 null..
关于如何使 ajax 调用起作用的任何想法?
【问题讨论】:
-
看看这个working example。
-
我复制了你的例子,没有修改任何东西。它完美地工作。如果 FromBody 没有从 View 完美绑定,也许 FromBody 会修复它。
-
我认为@WillyDavidJr 所说的是正确的,因为您的示例构建并且对我来说很好。
-
那我猜是我用的框架吧?我正在使用.Net Core 2.0。 FromBody 工作,但没有它,它不起作用。我将更改方法的属性并将其更改为我需要使用的对象。非常感谢您的快速回复。
-
@ErikPhilips,创建表单也可以,但我更喜欢从 jquery 创建数据模型,而不必将表单元素放置到位。感谢您的帮助。
标签: c# jquery ajax asp.net-mvc