1

我在 python 中创建了一个列表,然后将其转换为 json。但我无法在 javascript 中迭代并显示正确的项目。

有什么建议吗?

Python:

def friends2(request):
    fb_feed = [#data in here]
    b = json.dumps(fb_feed)
    print b
    return HttpResponse(b)

当我print b

[
    [1236870349, "Your friend", "Bhangra indian Jingle Bells balle balle Merry Christmas", "2lPdXV1KO4s", "Your friend watched \"Bhangra indian Jingle Bells balle balle Merry Christmas\""], 
    [2303218, "Your friend", "Look at this Instagram (Nickelback Parody)", "ttp://www.c", "Your friend watched \"Look at this Instagram (Nickelback Parody)\""]

]

javascript

    <script>
$(document).ready(function (){

            event.preventDefault();
            $.ajax({
                 type:"GET",
                 url:"/friends2/",
                 data: {},

                 success: function(b){
                    b = jQuery.parseJSON(b);
                                            console.log(b) //returns null
                    for (var i = 0; i < b.length; i++) { 
                            var friend = "";
                            friend = b[i][3]
                            friend += "\n";
                            $('.social').append(friend);
                        }                

                    }
            });
});
</script>

html

<div class = 'social'></div>
4

3 回答 3

1

添加dataType:json$.ajax脚本

 $.ajax({
         type:"GET",
         url:"/friends2/",  #the url /friends2/ points to friends2 in python
         data: {},
         dataType: json, //ADD THIS
         ...
         ...

如果你不想添加,dataType那么你可以jQuery.parseJSON(b)用来解析你的 json 字符串,

success: function(b) {
    var data = jQuery.parseJSON(b); //parse JSON string here
    ...
    ...

}
于 2012-12-06T15:27:56.850 回答
0

我认为你的代码有错误。json应该是正确的。b[3] 未定义,因为数组的长度为 2。您的意思是 b[i][3] 吗?

据我所知,其他一切都应该有效。

于 2012-12-06T15:38:33.823 回答
0

如果您的视图返回 JSON,您应该相应地设置内容类型(MIME 类型):

return HttpResponse(b, content_type='application/json')

jQuery$.ajax足够聪明,可以dataType: json在正确设置 MIME 类型时自动应用:

数据类型

默认值:智能猜测(xml、json、脚本或 html)

您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它

于 2012-12-07T01:59:11.977 回答