js序列化数组用于ajax提交数据

但我们要用ajajx提交类似于:

array(‘id‘ =>12,data => array(‘a‘=>1,‘b‘=>2));

这样的二维数组的数据时,直接ajax提交后台是接收不到的,需要特殊处理下:

//这里只能处理二维数组数据,多维的需在做循环或递归function serialize_data(obj){
    var str = ‘‘;
    for(var i in obj){
        if(typeof(obj[i]) === ‘object‘){
            for(var s in obj[i]){
                str = str + i+‘[‘+ s + ‘]‘ + ‘=‘ + obj[i][s] + ‘&‘;
            }
        }else{
            str = str + i + ‘=‘ + obj[i] + ‘&‘;
        }
    }
    return encodeURI(str);
}

  

实际上就是类似于这样的url请求:

http://192.168.0.63/index,php?id=12&data[a]=1&data[b]=2

用于请求的时候其实可以使用:

var str = URIencode(‘id=12&data[a]=1&data[b]=2‘);

然后将str用POST或者GET的方式发生就可以了

原文地址:https://www.cnblogs.com/wanghjun/p/9121576.html

时间: 2024-08-24 14:48:04

js序列化数组用于ajax提交数据的相关文章

jQuery 中 ajax 提交数据应用的一个小demo

举一个jquery中ajax的应用小 demo 便于以后的更多项目拓展 ,这里要注意的是保存的文件名问题 ... ajax02.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="form&qu

JavaWeb开发中form、ajax提交数据Model转化

JavaWeb开发中form.ajax提交数据Model转化 问题 最近学习MongoDB数据库,作为java开发的我,当然需要做个小的web程序来测试一番了.在html中我采取ajax提交方式,因为我要模拟各种类型的数据,基础数据类型.数组.对象等.然而,最终发现了个不同的地方:Form和ajax提交数据,在HttpServletRequest中尽然参数名有所不同. 数据类型 form ajax 基础数据 para=value para=value 数组 para[]={"aaa",

ajax提交数据问题

加入traditional:true属性 traditional 类型:Boolean 如果你想要用传统的方式来序列化数据,那么就设置为 true.请参考工具分类下面的 jQuery.param 方法. $.ajax({ type: "POST", url: url, traditional:true, data:{ data:[0,1] }, dataType: "json", async:false }); ajax提交数据问题

解决部分浏览器ajax提交数据,数据已改变,却后台数据接收数据还是上一次值的问题

最近在工作中遇到了QQ浏览器ajax提交数据,表单数据改变,却后台数据接收数据还是上一次值的问题,但是在其它浏览器中是正常的. 代码如下: $.ajax({ url : "<%=path%>/secretkey/uploadKey", async:false, type : 'post', data : { merKey : $('#merKey').val(), keyType : $('#keyType').val(), type : $('#type').val()

AJAX提交数据成功但不会跳转页面

HTML页面通过ajax提交数据成功,但是会执行多次success方法,不会跳转到指定页面 解决办法;把button的type改为button即可 1 <button type="button" id="addBtn" class="btn btn-primary btn-lg">添加</button> 2 3 <script type="text/javascript"> 4  $(&qu

用ajax提交数据到后台以便下载,但是不能下载

在js里面,把一段数据通过post提交给后台,经过后台解析处理,把他以输出流写给浏览器.会发现没得下载提示. 个人觉得是ajax不能解析返回的response里面的流. 如果数据比较大,像post过去,解析下载,那么在js里面可以自定义一个隐藏的form表单. var form=$("<form>");//定义一个form表单    form.attr("style","display:none");    form.attr(&qu

博客园项目-登录(验证码,ajax提交数据,session和cookie)

前端页面 {% load static %} <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content

向后台提交数据:通过form表单提交数据需刷新网页 但通过Ajax提交数据不用刷新网页可通过原生态Ajax或jqueryAjax。Ajax代码部分

原生态Ajax提交表单:需要借助XMLHttpRequest对象的open,要收通过post发送请求还要setRequsetHeader,然后把数据发送给后端,代码如下 目录结构 index.py代码 1 #index.py 2 #!/usr/bin/env python 3 #-*- coding:utf-8 -*- 4 import tornado.web 5 import tornado.ioloop 6 class indexHandler(tornado.web.RequestHand

form 表单序列化参数,ajax提交

①form表单的参数序列化后,然后提交. $.ajax({ type: 'post', url:$form1.attr("action"), data:$form1.serializeArray(),//序列化参数 dataType:"json", success: function(json){ if("200" == json.statusCode){ }else{ alertMsg.warn(json.message); } } }); ②