【问题标题】:Receive text with ajax and mvc使用 ajax 和 mvc 接收文本
【发布时间】:2018-06-25 17:01:44
【问题描述】:

我有使用 ajax jquery 发送到 .net 服务器的信息,但我无法接收数据作为参数(任何类型)并在内存中对其进行修改,然后将其转换为 json。 我会感谢你的帮助。

JAVASCRIPT

document.querySelector('input#btnGuardar').onclick = function (e) {
            e.preventDefault();
            var data = $('form#form_boleta').serializeJSON();
            $.ajax({
                type: "post",
                url: "/Comprobante/Factura",
                data: data,
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                success: function (result) {
                    if (result === "success") {
                        swal({
                            title: "¿Generar Otro Comprobante?",
                            text: "¡El comprobante se ha generado de manera correcta!",
                            type: "success",
                            showCancelButton: true,
                            confirmButtonClass: 'btn-success',
                            confirmButtonText: 'Si',
                            cancelButtonText: "No",
                            closeOnConfirm: false,
                            closeOnCancel: false
                        },
                            function (isConfirm) {
                                if (isConfirm) {
                                    self.parent.location.reload();
                                } else {
                                    window.location.href = "/Plataforma/Dashboard";
                                }
                            });
                    }
                    else {
                        var mensaje_error = document.getElementById('MensajeError');
                        //$("#MensajeError").fadeTo(1000, 1);

                        //$("#MensajeError").fadeOut(5000);
                        //return false;
                    }
                }
            })
        };

控制器 MVC .NET

public JsonResult Factura(string[] json)//The json parameter appears as Null
        {
            string result;
            if (json != null)
            {
                //Modify the data received json.

                result = "success";
            }
            else
            {
                result = "error";
            }

            return Json(result, JsonRequestBehavior.AllowGet);
        }

【问题讨论】:

    标签: javascript c# json ajax javascriptserializer


    【解决方案1】:

    好的,首先您必须在 $.ajax 中指定要向其发送信息的参数的名称,并将对象 "data" 解析为 Json 字符串

    $.ajax({
                type: "post",
                url: "/Comprobante/Factura",
                data: {json: JSON.stringify(data)},//JSON.stringify parse a object o json string
                dataType: 'json'
     })
    

    其次,在您的控制器中,MVC 将参数类型更改为字符串,并将字符串数据解析为您想要的类型。

    public JsonResult Factura(string json)//The json parameter appears as Null
        {
            string result;
            string[] data = JsonConvert.DeserializeObject<string[]>(json);
            if (data != null)
            {
                //Modify the data received json.
    
                result = "success";
            }
            else
            {
                result = "error";
            }
    
            return Json(result, JsonRequestBehavior.AllowGet);
        }
    

    【讨论】:

    • Muchas gracias,“无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.String[]',因为该类型需要 JSON 数组(例如 [1 ,2,3]) 正确反序列化。"
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 2019-10-05
    • 1970-01-01
    相关资源
    最近更新 更多