ajax传参使用json格式

摘要:
在过去,我使用段落来处理ajax请求的数据。直接打印request.GET,结果非常奇怪:我在互联网上找到了在ajax参数中使用json格式的方法。我不喜欢苹果http://www.cnblogs.com/jhxk/articles/1914026.html使用jQuery的JSON插件如下所述:http://code.google.com/p/jquery-json/,我还下载了它来尝试引入js文件:然后将ajax代码重写为:$.ajax;然后将结果打印为:更奇怪的是,我的所有参数都变成了params的一个键,其值为“”。似乎这不是问题的关键,所以我们回到了原来的方式,但当数组行被拆分时,打包过程似乎是有效的。

以往ajax请求的data我都是用一个paras来搞定的。

代码:

var paras = {};
                paras.name='jack';
                $.ajax({
                    type:'get',
                    url:'/testchart',
                    data:$.toJSON(paras),
                    dataType:'json',
                    contentType: 'application/json;charset=utf-8',
                    success: onDataReceived
                });

  

  这样传到后台,直接获取paras =request.GET就能将整个paras获取到,然后使用paras['name']就能得到传过来的name。

 var paras = {};
                paras.rows=[];
                var rowstr={};
                rowstr.property =null;
                rowstr.filter =null;
                rowstr.casted_type =null;
                paras.rows.push(rowstr);
                paras.bool_op ='or';
                paras.arb_event ='Add Friend Receive';
                paras.action='by';
                paras.unit='day';
                paras.type='general';
                paras.limit = 40;
                paras.chart_type= 'line';
                paras.chart_keys=['Add Friend Request'];
                paras.from_date = '2012-09-10';
                paras.to_date = '2012-10-10';
                paras.project ='pirates';

                $.ajax({
                    type:'get',
                    url:'/testchart',
                    data:paras,
                    dataType:'json',
                    contentType: 'application/json;charset=utf-8',
                    success: onDataReceived
                });

情况有点儿特殊,在paras里传入一个是数组的对象rows, 使用这样的方法在后台打印不出结果。也就是paras['rows']根本不响应。直接打印request.GET,发现结果很诡异:

<QueryDict: {u'project': [u'pirates'], u'rows[0][filter]': [u''], u'chart_keys[]': [u'Add Friend Request'], u'rows[0][property]': [u''], u'rows[0][casted_type]': [u''], u'bool_op': [u'or'], u'from_date': [u'2012-09-10'], u'limit': [u'40'], u'chart_type': [u'line'], u'action': [u'by'], u'type': [u'general'], u'arb_event': [u'Add Friend Receive'], u'unit': [u'day'], u'to_date': [u'2012-10-10']}>

网上搜到在ajax的传参使用json格式的方法,唔愛吃蘋果 在http://www.cnblogs.com/jhxk/articles/1914026.html中提到使用jQuery的JSON插件:http://code.google.com/p/jquery-json/, 我也下载来试一试,引入js文件:

<script type="text/javascript" src="http://t.zoukankan.com/static/js/jquery.json-2.3.min.js"></script>

  然后在ajax的代码改写成:

$.ajax({
                    type:'get',
                    url:'/testchart',
                    data:$.toJSON(paras),
                    dataType:'json',
                    contentType: 'application/json;charset=utf-8',
                    success: onDataReceived
                });

  然后打印出来的结果为:

<QueryDict: {u'{"rows":[{"property":null,"filter":null,"casted_type":null}],"bool_op":"or","arb_event":"Add Friend Receive","action":"by","unit":"day","type":"general","limit":40,"chart_type":"line","chart_keys":["Add Friend Request"],"from_date":"2012-09-10","to_date":"2012-10-10","project":"pirates"}': [u'']}>

  更更诡异的,我的所有参数变成了paras的一个key,其value为‘’.  看来这个不是问题的关键,于是改回到老路子上,但是对于数组rows出现了被拆分的情况,这个包装过程似乎有效。于是用

paras.rows.push($.toJSON(rowstr));

  替换原来的paras.rows.push(rowstr);打印request.GET. 结果如下:

<QueryDict: {u'chart_keys[]': [u'Add Friend Request'], u'bool_op': [u'or'], u'project': [u'pirates'], u'rows[]': [u'{"property":null,"filter":null,"casted_type":null}'], u'from_date': [u'2012-09-10'], u'limit': [u'40'], u'chart_type': [u'line'], u'action': [u'by'], u'type': [u'general'], u'arb_event': [u'Add Friend Receive'], u'unit': [u'day'], u'to_date': [u'2012-10-10']}>

  ok,是要的结果了,可以通过paras['rows[]']来获取rows整个传来的数组了。只是这个[]在这挺讨厌的。

免责声明:文章转载自《ajax传参使用json格式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇spring cloud gateway 日志打印docker容器的安装与使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于使用ajax导出excel问题

最近有个需求是在页面导入文件,后端进行处理后返回处理结果的excel,前端使用的是ajax。我最开始的做法是:在原有代码后加一段导出excel的代码,结果代码能正常运行,但页面始终没有返回我需要的excel。 而后开始百度编程模式,得出以下结论:   ajax是无法直接导出excel的,因为ajax的返回值只能是字符流,而导出excel是后台往浏览器中写入...

Web APi入门之基本操作(一)

最近学习了下WebApi,WebApi是RESTful风格,根据请求方式决定操作。以博客的形式写出来,加深印象以及方便以后查看和复习。 1、首先我们使用VS创建一个空的WebApi项目 2、新建实体以及控制器类 1 public classProduct 2 { 3 public int Id { set; get; } 4...

允许跨域资源共享(CORS)携带 Cookie (转载)

如何让CORS携带Cookie CORS 是一个 W3C 标准,全称是“跨域资源共享”(Cross-origin resource sharing)。默认浏览器为了安全,遵循“同源策略”,不允许 Ajax 跨域访问资源,而为了允许这种操作,服务器端和客户端都要遵循一些约定。服务器端需设置以下响应头: Access-Control-Allow-Origin...

layui之ajax巨坑

在使用layui做前端框架的时候,在请求ajax时,回调函数不执行问题,找了各种原因,各种的更改ajax参数类型和webapi返回类型 各种不行,最后发现layui默认是form提交,想要让他执行ajax回调就只是一句话 return false 看代码 layui.use(['form', 'layer'], function () { $ = layu...

JavaScript异步仿同步(控制流)的实现

在前端开发中尤其是在nodejs开发中经常会遇到这样的场景(以ajax为例):有3个(或者更多个)Ajax请求,并且第2个请求依赖于第1个,第3个请求依赖于第2个,那我们可能就会在发第一个Ajax后回调再执行第二个Ajax,第二个执行后再在回调里面执行第三个,如此就形成了回调金字塔了,也显得复杂,当然这种问题也有许多插件,如:Promise、async等。...

.net webapi后台返回pdf文件流,前端ajax请求下载,空白pdf排错经历

.net webapi后台返回pdf文件流,前端ajax请求下载,空白pdf排错经历 先上代码: 后台webapi代码: [HttpGet] [Route("{manifestId}")] public IHttpActionResult FindManifestPdfById([FromUri]string manifestId) {     byte...