我已经看过网,弄清楚我的错误是什么。我发现我尝试的所有建议都没有任何成功。我在我的控制器中访问httppost动作,但参数保持为空。
var dataPost = { 'id': id, 'val': val };
debugger;
$.ajax({
type: 'POST',
url: '/Extensions/UpdateJson',
data: dataPost ,
contentType: 'json',
success: function () {
alert("succes");
},
error: function () {
alert("error");
}
});
在调试时填充DataPost。
[HttpPost]
public ActionResult UpdateJson(string id, string val)
{
//do stuff
return Json(true);
}
我在控制器中使用的参数与我的Ajax函数中的参数名称相同。传递的格式是json,我也尝试使用以下方法填充数据:
var dataPost = { 'id': 'id', 'val': 'val' };
但这没有任何区别。我也试过使用类,比如 - >
public class ScheduleData
{
public string id { get; set; }
public string val { get; set; }
}
public ActionResult UpdateJson(ScheduleData data)
{//Do something}
任何帮助将不胜感激。提前致谢
答案 0 :(得分:6)
传递的格式是json
不,一点也不。您没有发送任何JSON。你做的是
data: { 'id': id, 'val': val }
但正如文档清楚地解释这是使用$.param
函数,后者又使用application/x-www-form-urlencoded
编码。
因此,请从$ .ajax调用中删除此contentType: 'json'
属性。
或者如果你真的想发送JSON,那么就这样做:
var dataPost = { 'id': id, 'val': val };
$.ajax({
type: 'POST',
url: '/Extensions/UpdateJson',
data: JSON.stringify(dataPost),
contentType: 'application/json',
success: function () {
alert("succes");
},
error: function () {
alert("error");
}
});
需要注意的事项:
JSON.stringify(dataPost)
以确保您向服务器发送JSON字符串contentType: 'application/json'
因为这是正确的Content-Type值。