serializearray(serializearray取不到值)

大家好,今天小编来为大家解答以下的问题,关于serializearray,serializearray取不到值这个很多人还不知道,现在让我们一起来看看吧!

在JavaScript编程中,数据序列化与反序列化是一项非常重要的技能。尤其是在进行前后端交互、本地存储、跨域通信等场景下,序列化与反序列化能力显得尤为重要。而今天,我们要介绍的就是一个强大的工具——SerializeArray。下面,就让我带大家一起来了解一下这个利器吧!

一、什么是SerializeArray?

SerializeArray是jQuery库中的一个方法,用于将表单序列化为一个数组对象。简单来说,就是将表单中的数据转换成一个数组,方便我们进行后续操作。

二、SerializeArray的原理

SerializeArray的原理其实很简单。它通过遍历表单中的所有元素,然后将元素名称和值存储到一个数组中。每个数组元素都是一个对象,包含name和value两个属性。

三、SerializeArray的使用方法

下面,我们通过一个简单的示例来展示SerializeArray的使用方法。

示例

“`html

下面是服务器端的jsp代码:

与JQuery中其他方法一样,serialize()方法也是作用于一个JQuery对象,它能够将DOM元素内容序列化为字符串,用于ajax请求。通过使用serialize()方法,可以提交本页面的所有域,代码如下:

当单击“提交”按钮后,所有属于form1的表单元素都能提交到后台,即使在表单中再增加字段,脚本仍然能够使用,并且不需要做其他多余工作。

用字符串方式时,需要注意对字符编码(中文问题),如果不希望编码带来麻烦,可以使用serialize()方法,它会自动编码。

因为serialize()方法作用于JQuery对象,所以不光只有表单能使用它,其他选择器选取的元素也都能使用它,如以下JQuery代码:

$(“:checkbox,:radio”).serialize()

把复选框和单选框的值序列化为字符串形式,只会将选中的值序列化。

在JQuery中还有一个与serialize()类似的方法–serializeArray(),该方法不是返回字符串,而是将DOM元素序列化后,返回JSON格式的数据。JQuery代码如下:

var fields=$(“:checkbox,:radio”).serializeArray()

console.log(fields);//用FireBug输出

$.param()方法是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。

比如将一个普通的对象序列化:

var obj={a:1,b:2,c:3}

var k=$.param(obj)

alert(k);//输出a=1&b=2&c=3

如何结合Jquery 的validate 和 ajax submit进行工作

在jquery中使用ajax方式进行异步调用有3种方式:$.post、$.get、$.ajax.

  其中$.post、$.get是封装的$.ajax方法。处理一些较为简单的ajax请求,参数少的情况。

  如果遇到复杂数据传输,或者对传输配置参数需要定义,就需要$.ajax了。

  一、$.ajax的一般格式

  $.ajax({

  type:'POST',

  url: url,

  data: data,

  success: success,

  dataType: dataType

  });

  二、$.ajax的参数描述

  参数描述

  

  

  url必需。规定把请求发送到哪个 URL。

  data可选。映射或字符串值。规定连同请求发送到服务器的数据。

  success(data, textStatus, jqXHR)可选。请求成功时执行的回调函数。

  dataType可选。规定预期的服务器响应的数据类型。

  默认执行智能判断(xml、json、script或 html)。

  

  三、$.ajax需要注意的一些地方:

  1.data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;

  通过dataType指定,不指定智能判断。

  2.$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,

  需要使用jquery.form.js的$.ajaxSubmit

  四、代码实例。

  1.$.ajax带json数据的异步请求

  1<SPAN style=”FONT-FAMILY:微软雅黑,'Microsoft YaHei'; FONT-SIZE: 14px”>var inputMac=$(“#inputMac”).val();<BR>var selectType=$(“#selectType”).val();<BR>var selectStatus=$(“#selectStatus”).val();<BR>$.ajax({<BR>type:”post”,<BR>dataType:'json',<BR>url: AjaxUrl,<BR>data:{<BR>mac: inputMac,<BR>status: selectStatus,<BR>type: selectType<BR>},<BR>success: function(data, textStatus){<BR>if(data!= null){<BR><BR>var ap= eval(data);<BR>if(ap!= null&& ap!=”undefined”&& ap.Id>0){<BR>//window.location.href='index.aspx';<BR>alert(“添加成功。”); return;<BR>}<BR>else{<BR>alert(“添加失败,请检查输入是否正确。”); return;<BR>}<BR>}<BR>},<BR>complete: function(XMLHttpRequest, textStatus){<BR><BR>},<BR>error: function(e){<BR>alert(“添加失败,请检查输入是否正确。”); return;<BR>}<BR>});<BR></SPAN>

  2.$.ajax序列化表格内容为字符串的异步请求

  使用方法是: var formParam=$(“#form1”).serialize();//序列化表格内容为字符串。

  将formParam作为data传递给服务器。

  serialize()与 serializeArray()

  serialize():序列表表格内容为字符串。

  serializeArray():序列化表格元素(类似'.serialize()'方法)返回 JSON数据结构数据。

  1<SPAN style=”FONT-FAMILY:微软雅黑,'Microsoft YaHei'; FONT-SIZE: 14px”> var formParam=$(“#form1”).serialize();//序列化表格内容为字符串<BR>$.ajax({<BR>type:'post',<BR>url:'Notice_noTipsNotice',<BR>data:formParam,<BR>cache:false,<BR>dataType:'json',<BR>success:function(data){<BR>}<BR>});<BR></SPAN>

  3.$.ajax拼接url的异步请求

  1<SPAN style=”FONT-FAMILY:微软雅黑,'Microsoft YaHei'; FONT-SIZE: 14px”>var yz=$.ajax({<BR> type:'post',<BR> url:'validatePwd2_checkPwd2?password2='+password2,<BR> data:{},<BR> cache:false,<BR> dataType:'json',<BR> success:function(data){<BR>if( data.msg==”false”)//服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间<BR>{<BR> textPassword2.html(“<font color='red'>业务密码不正确!</font>”);<BR>$(“#validatePassword2”).val(“pwd2Error”);<BR> checkPassword2= false;<BR> return;<BR>}<BR>},<BR>error:function(){}<BR>});<BR></SPAN>

  4.$.ajax拼接data的异步请求

  1<SPAN style=”FONT-FAMILY:微软雅黑,'Microsoft YaHei'; FONT-SIZE: 14px”>$.ajax({<BR>url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',<BR>type:'post',<BR>data:'merName='+values,<BR>async: false,//默认为true异步<BR>error:function(){<BR> alert('error');<BR>},<BR>success:function(data){<BR>$(“#”+divs).html(data);<BR>}<BR>});<BR></SPAN>

lavarel框架中怎么使用ajax提交表单

laravel简介:

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。“开发”应当是一项富有创造性的脑力劳动,而不是枯燥的“垒代码“。

开门见山,因为laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,所以当你用ajax提交表单时候自然也要加。

在网上看了很多的解决方式,我是用下面这种方法解决的:

1,首先在模板里面加上一个meta:

<meta name=”_token” content=”{{ csrf_token()}}”/>

2,然后在ajax方法里面加

headers:{'X-CSRF-TOKEN':$('meta[name=”_token”]').attr('content')},

这是ajax的方法,发现了很好用的jquery的函数,$().serialize()和$().serializeArray(),代码中我用的是后者,可以获取form表单中的数据,并且能直接通过ajax传输,简直太神奇了!!!(孤陋寡闻让大家见笑了)

$(form[1]).submit(function(event){var data=$(form[1]).serializeArray();// console.log(data);$.ajax({type:'post',url:'/basic',data:data,headers:{'X-CSRF-TOKEN':$('meta[name=”_token”]').attr('content')},success:function(msg){if(msg){$('.basicEdit').hide();$('.basicShow').show();$('.basicShow span').html(data[1].value+'|'+data[2].value+'|'+data[3].value+'|'+data[4].value+'<br>'+data[5].value+'|'+data[6].value+'|'+data[7].value);}},});// event.preventDefault();return false;});

3然后在控制器方法中获取数据了,直接$req->你的表单name就行了.

public function basic(Request$req){// return$req->gender;$uid= Auth::user()->uid;// return$uid;//$inf= new\App\Info;$inf= Info::where('uid',$uid)->first();// return$inf;$inf->name=$req->name;$inf->gender=$req->gender;$inf->topDegre=$req->topDegre;$inf->workyear=$req->workyear;$inf->tel=$req->tel;$inf->email=$req->email; return$inf->save()?”ok”:”fail”;}

总结下:

我觉得我说的每一步都是必须得!!!,我的回调函数里面写的代码是把表单里面获得数据重新打印出来了,不需要的可以忽视掉,然后代码将就看吧,一个php初学者奉上.

关于serializearray,serializearray取不到值的介绍到此结束,希望对大家有所帮助。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享