做项目的时候遇到一个不是很常见的问题,就是js函数传递参数的时候,我们一般是传递一个数字或者是一个字符串,但是当你的需求满足不了的时候,就需要将对象或者数组作为一个参数传递过去,这个时候怎么做呢,今天简单的说有一下:
先说一下我出现这个问题的环境,我在处理订单信息的时候,接口给的参数是所有的数据,所以这个时候我需要的是将所有的数据遍历出来,数据结构大概是这样的:
这个是典型的三层的json结构,所以遍历的难度是不大的,就是很容就遍历出错,我的需求当然不是说仅仅将这些数据遍历出来就可以了,我需要做的是将最里层的data拿到,作为对象传递过去,因为这是每一个订单的具体内容,也就是详情,所以需要明确的将data作为一个参数传递过去,废话不说了,看代码;
success: function(data) {
var odata = data.model_list;
for(var i = 0; i < odata.length; i++) {
detalData = JSON.parse(odata[i].data);
//console.info(typeof detalData);
var str = '<a onclick="detal_info(' +
JSON.stringify(detalData).replace(/\"/g, "'") + ')">' +
'</a>'
$('#order-detail').append(str);
}
这里简单的解释一下,首先拿到了成功的返回数据,这个时候我们看上面的数据结构,最外层的是model_list包括的,所以直接取出来,拿到以后呢将我们需要的data拿到,转为json格式的,这个时候我们下面需要用到里面数据的时候就比较容易拿到,下一步就是怎么将对象data作为一个参数传递过去,我们需要这样处理一下:
JSON.stringify(detalData).replace(/\"/g, "'")
将我们拿到的json对象转为string的字符串,然后用正则表达式将里面所有的''转为"",这样下面接收的时候才是可以的。、
这篇文章没有别的什么技术含量,只是编码过程中一个坑而已,毕竟我写的时候确实是查了资料,才明白,还是觉得应该记录一下,下次遇到了,还是希望可以直接拿来使用。
谢谢阅读!