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); } } }); } }
描述遇到这样的数据的时候会报错“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);
问题解决