0

我在使用Django的python中有一个GAE应用程序。我试图使用jquery的get/getJSON api从python api获取json,但它不会将读取的字符串读为json。我在这里错过了什么吗?getJSON不检索json对象

Django的模板

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" > </script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    $.get('/test/api?request=getallwords', function(json) { 
     $('body').append(json); 
     var j = JSON.stringify(json) 
     $.each(json.details,function(i){ 
      $('#list').append($('<li>' + this.word + '</li>')); 
     }); 
     alert(j); 
    }); 
    },'json'); 
</script> 
</head> 
<body> 
<ol id="list"> 
</ol> 

而这里的蟒蛇API。

words = Word.all().fetch(20) 
for w in words: 
    d = {"word":w.name.encode('utf-8'),"lists":[]} 
    for l in w.word_lists: 
     d["lists"].append({"list":l.word_list.name.encode('utf-8')}) 
success["details"].append(d) 
self.response.headers['Content-Type'] = 'application/javascript' 
self.response.out.write(success) 

并且json例子

{ '响应': '成功', '细节':[{ '字': 'mcity', '名单':[{ '清单': 'infy'},{'list':'dasd'}]},{'word':'mcity_1','lists':[]},{'word':'mcity_2','lists':[]} ,{'word':'mydc','lists':[{'list':'infy'}]},{'word':'hyddc','lists':[{'list':'infy'} ]},{'word':'abysmal','lists':[{'list':'gre words'}]},{'word':'ascent','lists':[{'list':' gre'words'},{'list':'infy'},{'list':'mine'}]},{'word':'assda','lists':[{'list':'dasd'} ]}]}

回答

0
$(document).ready(function(){ 
    $.get('/test/api?request=getallwords', function(json) { 
     $('body').append(json); 
     var j = JSON.stringify(json) 
     $.each(json.details,function(i){ 
      $('#list').append($('<li>' + this.word + '</li>')); 
     }); 
     alert(j); 
    }); // error, you close the $('document').ready() here 
    },'json'); 

将关闭想以下几点:

$(document).ready(function(){ 
    $.get('/test/api?request=getallwords', function(json) { 
     $('body').append(json); 
     var j = JSON.stringify(json) 
     $.each(json.details,function(i){ 
      $('#list').append($('<li>' + this.word + '</li>')); 
     }); 
     alert(j); 
    },'json'); 
}); 
+0

这实际上是问题之一。我意外地除去'self.response.headers [“内容 - 类型”] =“应用/ javascript''也改变'self.response.out.write(成功)''self.response.out.write(js on.dumps(成功))',我得到它显示。谢谢您的帮助! – adifire

0

看起来像你正在使用jQuery get()不是getJSON(),所以你需要在请求对象中具体的dataType作为JSON。

如果你想在“json的”下方是这样做的,我想你已经得到了闭括号混合起来(GET前$(document).ready()

}); 
    },'json');