Javascript 使用jquery和ajax将json对象发布到mvc控制器
我正在尝试将表单中的一些值提交给我的mvc控制器 这是我的控制器:Javascript 使用jquery和ajax将json对象发布到mvc控制器,javascript,jquery,ajax,asp.net-mvc,html,Javascript,Jquery,Ajax,Asp.net Mvc,Html,我正在尝试将表单中的一些值提交给我的mvc控制器 这是我的控制器: //Post/ Roles/AddUser [HttpPost] public ActionResult AddUser(String json) { Log.submit(json); return View(); } public void PostRawJson(string json) { var order
//Post/ Roles/AddUser
[HttpPost]
public ActionResult AddUser(String json)
{
Log.submit(json);
return View();
}
public void PostRawJson(string json)
{
var order = System.Web.Helpers.Json.Decode(json);
var orderDate = order.OrderDate;
var secondOrderId = order.Item[1].Id;
}
以下是js:
<script>
function submitForm() {
var usersRoles = new Array;
$("#dualSelectRoles2 option").each(function () {
usersRoles.push($(this).val());
});
console.log(usersRoles);
jQuery.ajax({
type: 'POST',
url: "@Url.Action("AddUser")",
contentType: "application/json; charset=utf-8",
datatype: 'json',
data: JSON.stringify(usersRoles),
success: function (data) { alert(data); },
failure: function (errMsg) {
alert(errMsg);
}
});
}
函数submitForm(){
var usersRoles=新数组;
$(“#dualSelectRoles2选项”)。每个(函数(){
usersRoles.push($(this.val());
});
日志(usersRoles);
jQuery.ajax({
键入:“POST”,
url:“@url.Action(“AddUser”)”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
数据:JSON.stringify(usersRoles),
成功:函数(数据){警报(数据);},
失败:函数(errMsg){
警报(errMsg);
}
});
}
当我在控制器上调试时,我的参数是否为空?
console.log(usersRoles)
为我提供数据
我做错了什么
如何在控制器中接收json对象?模型绑定比接收json字符串更好。例如:
[HttpPost]
public ActionResult AddUser(UserAddModel model)
{
if (ModelState.IsValid) {
return Json(new { Response = "Success" });
}
return Json(new { Response = "Error" });
}
<script>
function submitForm() {
$.ajax({
type: 'POST',
url: "@Url.Action("AddUser")",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: $("form[name=UserAddForm]").serialize(),
success: function (data) {
console.log(data);
}
});
}
</script>
[HttpPost]
公共操作结果AddUser(UserAddModel模型)
{
if(ModelState.IsValid){
返回Json(新的{Response=“Success”});
}
返回Json(new{Response=“Error”});
}
函数submitForm(){
$.ajax({
键入:“POST”,
url:“@url.Action(“AddUser”)”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
数据:$(“form[name=UserAddForm]”)。序列化(),
成功:功能(数据){
控制台日志(数据);
}
});
}
我在您的代码中看到,您试图将数组传递给POST操作。在这种情况下,请遵循以下工作规范:
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
function submitForm() {
var roles = ["role1", "role2", "role3"];
jQuery.ajax({
type: "POST",
url: "@Url.Action("AddUser")",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(roles),
success: function (data) { alert(data); },
failure: function (errMsg) {
alert(errMsg);
}
});
}
</script>
<input type="button" value="Click" onclick="submitForm()"/>
函数submitForm(){
变量角色=[“角色1”、“角色2”、“角色3”];
jQuery.ajax({
类型:“POST”,
url:“@url.Action(“AddUser”)”,
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
数据:JSON.stringify(角色),
成功:函数(数据){警报(数据);},
失败:函数(errMsg){
警报(errMsg);
}
});
}
控制器的动作将是——
public ActionResult AddUser(List<String> Roles)
{
return null;
}
public ActionResult AddUser(列出角色)
{
返回null;
}
然后,当您单击按钮时-
我做错了什么? 您必须将html转换为javascript对象,然后作为第二步,通过json.Stringify转换为json 如何在控制器中接收json对象? 视图:
我如何创建UseRaddModel?但是我提交了一个json对象。没有多个变量?不知道为什么要这样做。不管怎样,你能展示一下html吗?usersRoles数组中有什么?尝试从ajax函数中删除contentType并使用以下数据:{“json”:json.stringify(usersRoles)}我花了一段时间试图让这个模型绑定的方法工作,但我的控制器参数只有null。我发现我有一个javascript错误,只添加了一列的另一项。确保传递的JSON与模型完全匹配。如果没有,您只会得到一个空参数,没有任何线索或消息
public void PostRawJson(string json)
{
var order = System.Web.Helpers.Json.Decode(json);
var orderDate = order.OrderDate;
var secondOrderId = order.Item[1].Id;
}