nodejs-后端向前段json传值的问题
发布于 7 年前 作者 dcminicode 4321 次浏览 来自 问答
function redtypepl(res,req,typearr,callback){
//这个只是为了测试传入的参数是有值的成功
for(let gg =0;gg<typearr.length;gg++){
console.log(typearr[gg][“title”]);
}
//返回数组给前端
res.json({errno:0, data:[typearr]});
}
//前台ajax接受
var typemyre = JSON.parse(typelxmlhttp.responseText);
if(typemyre.errno == “0”)
{
var begindata = typemyre.data || [];
var tpldata = begindata[0];

此处tpldata就是后台传过来的typearr数组

问题: tpldata[i][“title”]结果为 undefined

现场描述: 1.开始运行,后台测试循环typearr,可以成功打印数据内所有内容,有值,正确! 2.前台页面接受到的数组tpldata,可以成功打印length,数量和后台输出一致!

既然内容可以返回,数组length计数正确,为什么值是undefined呢,求教大神~~~

6 回复

这个问题基本上等于 1+1为什么等于3,原因也很简单:就是你算错了呗;回到你的问题上,既然你tpldata的length跟后台一致,你for in遍历下这个数据结构看看他有什么key什么value不就是了。这个太基础了,基本的debug能力还是要有的; Ps:如果我没看错,你tpldata已经是数组第一元素,也就是后端的typearr,你后续的tpldata[i]看下是什么吧。

res.json({errno:0, data:[typearr]}); data后多了中括号吧?

@haozxuan 谢谢您的指教,我也是刚学nodejs,有不成熟的地方请见谅.另外之前已经使用循环打印过了,截图如下 微信截图_20171024150930.png 第一种方式是for循环输入key的value值,第二种是foreach循环key的value,第三种是直接循环tpldata[i];

我费解的是后台传值的时候是有值的,因为使用了async.waterfall,在进入这个方法的时候值已经计算完成了,并且我再方法内输出也验证这一点,为什么前台却只有length,没有键值对呢?

@lumeng689 没有,因为前台取值的时候已经去了[0],后台数组第一个元素,这样是为什么方便多参数传递,感谢你的回答~

这个问题已经解决,但是为什么解决我还是没有头绪,因为我只是把后台赋值的时候 arr[“title”]改成了arr[0],用下标代替键,前台就可以成功获取值,其他没有任何代码的更改…

@dcminicode 你可能是写PHP的吧,具体原因很简单,你看下这个就明白了: image.png

回到顶部