Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery和ajax将json对象发布到mvc控制器_Javascript_Jquery_Ajax_Asp.net Mvc_Html - Fatal编程技术网

Javascript 使用jquery和ajax将json对象发布到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

我正在尝试将表单中的一些值提交给我的mvc控制器

这是我的控制器:

 //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;
}