$.ajax({
type: 'POST',
url: "/api/student",
data:'{"x":3,"y":2}',
dataType: "json",
complete: function (r, s) {
debugger;
},
success: function(response){
debugger;
},
contentType: "application/json" // !!!!!!!!!!!! The reason of problem. I could see Json on firebug. It was false-positive for my code !
});
我通过Firebug追踪了流。 Firebug识别并显示JSON对象。
此代码访问了RestServiceBase的OnPost方法。但是模型绑定不起作用。 在Json对象和C#类上,属性名称必须完全相同吗?
或者我错过了什么? (是的,你错过了什么!)
PS:我已经将url更改为“/ api / student / json / asynconeway”但希望我得到404错误
答案 0 :(得分:4)
ServiceStack 模型绑定JSON POST(以及任何支持的内容类型,包括x-www-form-urlencoded)。
ServiceStack.Examples中有很多例子可以做到这一点。
此代码访问了RestServiceBase的OnPost方法.But模型绑定 没用。
您尚未显示您要尝试绑定的DTO。但是这个JSON
{"x":3,"y":2}
将映射到匹配的DTO,例如:
public class Student {
public int X { get; set; }
public int Y { get; set; }
}
在Json对象和C#类上,属性名称必须完全相同吗?
他们必须匹配课程名称,但不区分大小写,请参阅上文。
PS:我已经将网址更改为“/ api / student / json / asynconeway”但希望如此 然后我得到404错误
这是错误的。如果您尝试使用automatic pre-defined route,则正确的网址为:
/api/json/asynconeway/student
假设您的请求DTO 被称为Student
。
答案 1 :(得分:0)
这是我的一些代码:
$.ajax({
type: "POST",
url: "/artist/delete",
data: { id: itemId },
success: function () {
$("div#" + itemId).fadeOut(function () { $(this).remove(); });
}
});
编辑:抱歉,我误解了你想要的东西,所以我会问你一个问题,你为什么要把json送到服务器,你可以在这个地方做一个这样的功能:
[HttpPost]
public ActionResult Delete(int id)
{
var artist = _db.Artists.Where(x => x.ID == id).SingleOrDefault();
if (artist == null)
{
return Content("false");
}
else
{
_db.Artists.DeleteOnSubmit(artist);
_db.SubmitChanges();
return RedirectToAction("Post");
}
}
EDIT2:,您在这里遇到语法错误data:'{"x":3,"y":2)}',
EDIT3:另一种语法错误
}
}
});
代码结尾。
答案 2 :(得分:0)
我必须添加
dataType:“application / json”属性为ajax请求!