首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jquery中遍历Json

在Jquery中遍历Json
EN

Stack Overflow用户
提问于 2011-10-06 00:16:08
回答 1查看 185关注 0票数 1

大家好,提前感谢你们的帮助。首先,如果我在这里使用了错误的短语,请道歉。我并不是很担心这里的语法,只是让它正常工作。现在,问题是:我让django序列化程序输出以下JSON:

代码语言:javascript
复制
[
    {
        "pk": 11262, 
        "model": "dict.words", 
        "fields": {
            "lang": "KO", 
            "incorrect": null, 
            "sug_translation": [
                3215
            ], 
            "word": "\uc0dd\uac01\ud558\ub2e4", 
            "definition": [], 
            "pos": "VE", 
            "phrase": [], 
            "translation": [
                {
                    "pk": 1, 
                    "model": "dict.words", 
                    "fields": {
                        "word": "comprender"
                    }
                }, 
                {
                    "pk": 6028, 
                    "model": "dict.words", 
                    "fields": {
                        "word": "entender"
                    }
                }
            ], 
            "incomplete": null
        }
    }
]

我想要做的是访问fields.translation.fields.words,因此自动完成的Jquery是

代码语言:javascript
复制
$(function() {

             $( "#query_form" ).autocomplete({
                     minLength: 2,
                     source: 'http://127.0.0.1:8000/json_results/',
                     focus: function( event, ui ) {
                             $( "#query_form" ).val( ui.item.word );
                             return false;
                     },
             select: function( event, ui ) {
                     $.get ('http://127.0.0.1:8000/json_detail/',
                                {
                                 item: ui.item.pk
                                },
                                function(data) {
                                 $('#query_result').prepend(data);
                                });
                     $( "#query_form" ).val( ui.item.word );
                     return false;
             }
     })
     .data( "autocomplete" )._renderItem = function( ul, item ) {
                        var tran = $.each(item.fields.translation, function(i){item.fields.translation[i].fields.word})
                return $( "<li></li>" )
                        .data( "item.autocomplete", item )
                        .append("<a>" + item.fields.word + tran + "</a>")
                        .appendTo( ul );
     };
});

总的来说,我对jquery和javascript完全是个新手,所以请原谅任何明显的格式错误。无论如何,这里的问题是,虽然这确实发出了请求,并且自动补全函数,但函数(item.fields.translation,$.each(I) item.fields.translationi.fields.word})在自动补全列表中返回object,Object。如果我让它通过alert()输出,它会返回正确的值。如果我只是在.append行中使用item.fields.translation.fields.word,它会输出值。但是出于某种原因,当我请求它做我想让它做的事情时,我得到了object对象,所以,有人知道我做错了什么吗?提前感谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 00:48:52

您将变量tran设置为等于$.each()函数,该函数为returns jQuery。这就是它最终成为一个对象的原因。

我不清楚你到底想做什么。循环遍历item.fields.translation数组中的项,但最终执行追加操作,就好像此循环应该只返回单个字符串一样。但是item.fields.translation的数组中有两个项目,所以...你可以像这样构建一个数组:

代码语言:javascript
复制
var tran = [];
$.each(item.fields.translation, function(i){
    tran.push(item.fields.translation[i].fields.word);
});
//tran now equals ['comprender','entender']

不确定这是否有帮助。如果您澄清了您对tran的期望,那么我可以进一步提供帮助。

附注:您可以将当前迭代中的项的值传递给$.each()中的函数,而不仅仅是它的索引/键。例如:

代码语言:javascript
复制
$.each(item.fields.translation, function(i,v){
    //the following is the same as tran.push(item.fields.translation[i].fields.word);
    tran.push(v.fields.word);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7664424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档