为啥这样写取不到单个的值

ziluopao 发布于 2016/06/14 23:16
阅读 184
收藏 0

下面代码我只想取出json中的title这个值所对应的值,

但,就是不出来,不知为啥

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    html = '';

            html += template.render('mytest', data1.title);



    $("#content").text(html);
});



加载中
0
ziluopao
ziluopao

引用来自“ziluopao”的评论

引用来自“bnysky”的评论

data1.title能取出内容,不是json的问题。你这里应该是使用了js模板引擎,应该跟你写的模板有关

好吧,为了避免你说的模板引擎干扰,我的问题改一下,此种情况如何每次只取一个值,就类似php中的mysql_fetch_row()那样,当然,我知道要用$.each,但就是不大对劲

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    html = '';
 
            html += 每次只要一个数据........;
 
 
 
    $("#content").html(html);
});    

我想要下面这样的效果

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        html +=...............
    });
    $("#content").text(html);
});




引用来自“ziluopao”的评论

上面的写法还是有点问题,代码中加上序列这个参数

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        $.each(v,function (kk,vv) {
            html += kk+"~~~~~~~~~~~~~~~~~~"+vv;
        });
     });
    $("#content").text(html);
});

在页面显示的是这个结果,如图



可以看出 $.each把 'title':'我的商城名称';中的每一个字都分别循环了一下,但,这不是我想要的,我想要的是类似
'listdata':['哈哈','喜嘻','呵呵','哦哦']

中的每次只取一个值出来

$(function () {
    var data1 =
    {
        "datas":{
            "title":"我的商城名称",
            "listdata":["哈哈","喜嘻","呵呵","哦哦"]
            }
        


    };
    var html = '';
    $.each(data1.datas,function (k,v) {
        console.info(typeof v);
        if(typeof v != 'string'){
            $.each(v,function (kk,vv) {
                html += '<li>'+vv+'</li>';
            });
        }else{
            html += '<li>'+v+'</li>';
        }

     });
    console.info(html);
    $("#content").html(html);

});

这是最终答案,和我一样的小白参考一下吧



0
Tuesday
Tuesday
json应该是双引号的结构体. 
ziluopao
ziluopao
和这没关系
0
bnysky
bnysky
data1.title能取出内容,不是json的问题。你这里应该是使用了js模板引擎,应该跟你写的模板有关
0
ziluopao
ziluopao

引用来自“bnysky”的评论

data1.title能取出内容,不是json的问题。你这里应该是使用了js模板引擎,应该跟你写的模板有关

好吧,为了避免你说的模板引擎干扰,我的问题改一下,此种情况如何每次只取一个值,就类似php中的mysql_fetch_row()那样,当然,我知道要用$.each,但就是不大对劲

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    html = '';
 
            html += 每次只要一个数据........;
 
 
 
    $("#content").html(html);
});    

我想要下面这样的效果

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        html +=...............
    });
    $("#content").text(html);
});




0
ziluopao
ziluopao

初步成功了一下

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        $.each(v,function (kk,vv) {
            html += vv;
        });
     });
    $("#content").text(html);
});



ziluopao
ziluopao
后来反思一下,这么简单为啥自己不会,原因是没有搞明白each回调函数中参数的真正意义
0
ziluopao
ziluopao

引用来自“ziluopao”的评论

引用来自“bnysky”的评论

data1.title能取出内容,不是json的问题。你这里应该是使用了js模板引擎,应该跟你写的模板有关

好吧,为了避免你说的模板引擎干扰,我的问题改一下,此种情况如何每次只取一个值,就类似php中的mysql_fetch_row()那样,当然,我知道要用$.each,但就是不大对劲

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    html = '';
 
            html += 每次只要一个数据........;
 
 
 
    $("#content").html(html);
});    

我想要下面这样的效果

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        html +=...............
    });
    $("#content").text(html);
});




上面的写法还是有点问题,代码中加上序列这个参数

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        $.each(v,function (kk,vv) {
            html += kk+"~~~~~~~~~~~~~~~~~~"+vv;
        });
     });
    $("#content").text(html);
});

在页面显示的是这个结果,如图



可以看出 $.each把 'title':'我的商城名称';中的每一个字都分别循环了一下,但,这不是我想要的,我想要的是类似
'listdata':['哈哈','喜嘻','呵呵','哦哦']

中的每次只取一个值出来

0
ziluopao
ziluopao

引用来自“ziluopao”的评论

引用来自“bnysky”的评论

data1.title能取出内容,不是json的问题。你这里应该是使用了js模板引擎,应该跟你写的模板有关

好吧,为了避免你说的模板引擎干扰,我的问题改一下,此种情况如何每次只取一个值,就类似php中的mysql_fetch_row()那样,当然,我知道要用$.each,但就是不大对劲

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    html = '';
 
            html += 每次只要一个数据........;
 
 
 
    $("#content").html(html);
});    

我想要下面这样的效果

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        html +=...............
    });
    $("#content").text(html);
});




引用来自“ziluopao”的评论

上面的写法还是有点问题,代码中加上序列这个参数

$(function () {
    var data1 = {
        'title':'我的商城名称',
        'listdata':['哈哈','喜嘻','呵呵','哦哦']
    };
    var html = '';
    $.each(data1,function (k,v) {
        $.each(v,function (kk,vv) {
            html += kk+"~~~~~~~~~~~~~~~~~~"+vv;
        });
     });
    $("#content").text(html);
});

在页面显示的是这个结果,如图



可以看出 $.each把 'title':'我的商城名称';中的每一个字都分别循环了一下,但,这不是我想要的,我想要的是类似
'listdata':['哈哈','喜嘻','呵呵','哦哦']

中的每次只取一个值出来

引用来自“ziluopao”的评论

$(function () {
    var data1 =
    {
        "datas":{
            "title":"我的商城名称",
            "listdata":["哈哈","喜嘻","呵呵","哦哦"]
            }
        


    };
    var html = '';
    $.each(data1.datas,function (k,v) {
        console.info(typeof v);
        if(typeof v != 'string'){
            $.each(v,function (kk,vv) {
                html += '<li>'+vv+'</li>';
            });
        }else{
            html += '<li>'+v+'</li>';
        }

     });
    console.info(html);
    $("#content").html(html);

});

这是最终答案,和我一样的小白参考一下吧



$(function () {
    var data2 = {
        code:200,
        datas:[{"adv_list1": {"item":[{"goods_id": "233", "goods_name": "某某店", "goods_promotion_price": "20.00", "goods_price": "22.00"}]}},{"gop": {"title": "即时打折"}},{"pods2": {"title": "抢购团购"}}]
    };

    var data1 =
    {
        "datas":[
            {
                "title":"我的商城名称",
                "listdata":["哈哈","嘻嘻","呵呵","哦哦"]
            }
        ],
        "secondatas":[
            {
                "title":"你的商城名称",
                "listdata":[{"p1":"嘿嘿","p2":"吼吼","p3":"扑扑","p4":"耶耶"}]
            }
        ]
    };
    var html = '';
    $.each(data2.datas,function (k1,v1) {
            $.each(v1,function (kk1,vv1) {
                html += template.render(kk1, vv1);
            });


    });

    $("#content").html(html);

});    

模板的这的写法

<script type="text/html" id="adv_list1">
	<%for(var i in item){%>
		<li><%=item[i].goods_price%></li>
	<%}%>
</script>

<script type="text/html" id="gop">

	<li><%=title%></li>

</script>

<script type="text/html" id="pods2">
	<li><%=title%></li>
</script>





返回顶部
顶部