1.jquery提交数据的方式:
创新互联专注于企业成都全网营销、网站重做改版、茄子河网站定制设计、自适应品牌网站建设、H5建站、商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为茄子河等各大城市提供网站开发制作服务。
(1)第一种jquery序列化提交数据方式:
通过id获取的form表单元素.serialize();
(2)第二种模拟form表单提交元素:
$('#form表单id').attr('method','post');
$('#form表单id'').find('input[name="type"]').val(test);
$('#form表单id').find('input[name="dfrom_to1"]').val(dfrom_to);
$('#form表单id').find('input[name="gt_road_new"]').val(gt_road);
$('#form表id').attr('action',AdminLTE.ctx+'/modules/ltegt/findAllCoverAndInterfere.do');
$('#analysisForm').submit();
2.js提交数据的方式:
(1).js提交表单( .submit()方法提交表单 )
function doSearch(){
var action ="%=path%/User_queryAllUser";
document.all.form.action = action;
document.all.form.submit();}
(2).js替代超链接( window.location.href )
input type="button" id="modify" value="修改工号" οnclick="modifyEmp(${ myList.employeeId })"
//js不能起名为modify,为敏感关键字
function modifyEmp( employeeId ){
//employeeId 作为js的参数传递进来
window.location.href = '%=path%/User_openUserUpdate?employeeId='+employeeId;
通过$("#form").serialize()可以获取到序列化的表单值字符串。
通过$("#form").serializeArray()输出以数组形式序列化表单值。
统统不满足想得到Json的愿望。堆栈溢出后,找到了一个这样的方法
然后通过JSON.stringify($("#form").serializeObject()); 就可以得到Json内容
那是因为URL规范里就是要求空格在query string里被编码为加号吧。
直接用$_POST['data'];获取即可的;
$data = $_POST['data'];
echo 'pre';
print_r($data);
die();
这样就是一个数组,你无需再用什么序列化、反序列化之类的,你可以输出$_POST的数据看看就知道勒!(*^__^*)
若有任何其它疑问,欢迎追问......
有,用unserialize()来反序列化
但是注意,要想将值填充到表单中,要手工指定,因为你序列化得到的是一个数组
$arr = unserialize($str);
input type='text' name='username' value=?php echo $arr['username']?
这是因为后台能够直接处理的数据格式,是一种经过序列化的键值对数据,比如前端要向后台提交三个参数,分别是a=1,b=2,c=3,那么后台接收到的数据就应该是a=1b=2c=3(可以看到其实就是每个“键值对”之间用连接)。当我们用get方式提交数据时,参数是直接附加到url后面的,即
xxx.xxx这是域名此略.xxx?a=1b=2c=3
可以看到?后面的正是后台程序能够直接处理的数据格式,所以get方式提交数据的话,就不需要再对参数进行序列化处理了,直接提交即可。
而当我们用post方式提交时,通常我们提交的数据本身就是一个json对象,比如说像这样的:
var data = {a:1, b:2, c:3};
而提交时数据是直接以原始格式存储在body中而不是以键值对的方式附加到url中的,所以后台程序是无法直接识别的,这时候就需要在提交前先把data转换为 a=1b=2c=3 的格式再提交,这就是序列化。
当然,如果数据是通过表单提交的,那么不管是post方式还是get,浏览器会自动进行序列化,无需前端js再做任何处理。