博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将表单序列化之后变成的json格式的数据无法通过Ajax发送到后台的解决
阅读量:4092 次
发布时间:2019-05-25

本文共 988 字,大约阅读时间需要 3 分钟。

问题描述:动态生成的表格,封装到同一个form之中,每个input必须有name属性,当使用jquery提供的serialize()方法将所有name-value自动生成之后,再对其进行人为的替换,最终在jsp中直接组装成json格式的数据,如代码一所示:

var json1=$("#form1").serialize();//将id为form1的表单序列化				var json = " { ";				var f="t";				var msg2 = json1.split("&");   //先以“&”符号进行分割,得到一个key=value															形式的数组				for(var i = 0; i

此时json变量已经是“json”格式的数据了,然而当将json直接放到如下的Ajax中执行时,数据根本为传到后台,但是打上dbugger获取到json的值,将改值直接替换方法中得分json后,传输正常!

代码如下(postJSON是对jquery的Ajax方法进行了封装处理,道理是一样的,第一个参数是访问路径,第二个参数是发送到后台的json格式的数据,第三个则是一个有返回值的方法)

$.postJSON(webRootPath+"/basicsinfo/membership/insert",json  , function(data){if(data){。。。。。。}});

解决方法:

原因是由于组装之后的数据是一个字符串,而传输时需要的是json对象,解决方法是将最终的字符串通过json= eval('(' + json + ')');  json转变为json对象 这样的话就能传到后台了!

json= eval('(' + json + ')');$.postJSON(webRootPath+"/basicsinfo/membership/insert",json  , function(data){if(data){。。。。。。 }});
总结:如果字符串拼接之后的格式是{k:v,k:v......}这种的话,直接使用
eval('(' + json + ')');来转为json对象,如果是[{k:v,k:v......},{k:v,k:v......}...]这种格式的话,则直接使用eval(json)即可

转载地址:http://hicii.baihongyu.com/

你可能感兴趣的文章
DirectX11 平行光
查看>>
DirectX11 点光
查看>>
DirectX11 聚光灯
查看>>
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
漫谈一下前端的可视化技术
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
Node.js核心模块
查看>>
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>