大家好,提前感谢你们的帮助。首先,如果我在这里使用了错误的短语,请道歉。我并不是很担心这里的语法,只是让它正常工作。现在,问题是:我让django序列化程序输出以下JSON:
[
{
"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是
$(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对象,所以,有人知道我做错了什么吗?提前感谢你!
发布于 2011-10-06 00:48:52
您将变量tran设置为等于$.each()函数,该函数为returns jQuery。这就是它最终成为一个对象的原因。
我不清楚你到底想做什么。循环遍历item.fields.translation数组中的项,但最终执行追加操作,就好像此循环应该只返回单个字符串一样。但是item.fields.translation的数组中有两个项目,所以...你可以像这样构建一个数组:
var tran = [];
$.each(item.fields.translation, function(i){
tran.push(item.fields.translation[i].fields.word);
});
//tran now equals ['comprender','entender']不确定这是否有帮助。如果您澄清了您对tran的期望,那么我可以进一步提供帮助。
附注:您可以将当前迭代中的项的值传递给$.each()中的函数,而不仅仅是它的索引/键。例如:
$.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);
});https://stackoverflow.com/questions/7664424
复制相似问题