Json解析特殊字符报错的解决办法

前端提交数据到后台的数据遇到特殊字符,特别是<>前端就会报错。

function SaveSp() { 
            var bl = true;
            $('#tb1 tbody tr').each(function (i, o) {
                if ($(o).find("input[name^='SPItemNo']").val().length == 0) {
                    layer.alert('配件编号不能为空');
                    bl = false;
                    return; }
                if ($(o).find("input[name^='Desc1']").val().length == 0) {
                    layer.alert('配件名称不能为空');
                    bl = false;
                    return;
                }
                if ($(o).find("input[name^='Qty']").val() == "0" || $(o).find("input[name^='Qty']").val() == "" ) {
                    layer.alert('数量不能为空和0');
                    bl = false;
                    return;
                }
                if ($(o).find("input[name^='Unit']").val().length == 0) {
                    layer.alert('单位不能为空');
                    bl = false;
                    return;
                }
                if ($(o).find("input[name^='Remarks']").val().length == 0) {
                    layer.alert('申请原因不能为空');
                    bl = false;
                    return;
                }
            });
            if (bl) {
                var result = []
                $('#tb1 tbody tr').each(function (i, o) {
                    var thisItem = $(this);
                    alert($(o).find("input[name^='Desc1']").val());
                    alert($(o).find("input[name^='Desc1']").val().replace('\n', '').replace('\r', '').length);
                    alert($(o).find("input[name^='Desc1']").val().length);
                    result.push({
                        MOrder: $("#MOrder").val(),
                        Plant: $("#Plant").val(),
                        SPItemNo: $(o).find("input[name^='SPItemNo']").val(),   //$(o).find("input[name='MOrder']").val() 
                        Qty: $(o).find("input[name^='Qty']").val(),
                        Desc1: $(o).find("input[name^='Desc1']").val(),
                        Unit: $(o).find("input[name^='Unit']").val(),
                        Remarks: $(o).find("input[name^='Remarks']").val(),
                        Location: $("#Location").val(),
                        EquipID: $("#EquipID").val(),
                        MainWC: $("#mainwc").val(),
                    })
                });
                alert(result); 
                layer.load(1);
                $.ajax({
                    url: "@Url.Action("SPApplySQSave", "EM")",
                    data: { Sp: encodeURIComponent(JSON.stringify(result)), morder: $("#MOrder").val(), location: $("#Location").val() },
                    type: "Post",
                    dataType: 'json',
                    success: function (data) {
                        debugger;
                        if (data.Success) {
                            //layer.msg('提交成功,单号为:' + data.OAno);
                            layer.closeAll('loading');
                            layer.msg('提交成功');
                            //layer.alert('提交成功');
                            window.parent.location.reload();
                            var index = parent.layer.getFrameIndex(window.name);
                            parent.layer.close(index);
                        } else {
                            debugger;
                            layer.closeAll('loading');
                            var aa = data.Errors[0];
                            layer.msg(aa);
                        }
                    }
                });
            }
        }
View Code

描述遇到这样的数据的时候会报错“104#钻机5#106#4#59#钻机2#61#钻机1#(4个)坏头损坏修复,具体见BOQ<br>;”

参考:https://www.jianshu.com/p/748f592c9db0?ivk_sa=1024320u

先转义 把Sp: JSON.stringify(result), 改成  Sp: encodeURIComponent(JSON.stringify(result)),

后台接收的时候再转回来

Sp = HttpUtility.UrlDecode(Sp);
 

Sp = HttpUtility.UrlDecode(Sp);
BaseManager bm = new BaseManager();
JavaScriptSerializer js = new JavaScriptSerializer();
var startTime = DateTime.Now;
// 把多维数组转换成List泛型。
t_SpOAlist model = new t_SpOAlist();
model = JsonConvert.DeserializeObject<List<t_SpOAlist>>(Sp).AsEnumerable().FirstOrDefault();
var resultqq = JsonConvert.DeserializeObject<List<t_SpOAlist>>(Sp);
List<t_SpOAlist> lst = js.Deserialize<List<t_SpOAlist>>(Sp);
View Code

问题解决

posted @ 2022-11-16 14:06  德平Zeng  阅读(429)  评论(0编辑  收藏  举报