2015-10-07 57 views
0

我想通过使用ajax将json数据从django视图转移到模板。
这里是我ajax code将json数据从django-view发送到ajax

$(document).ready(function(){ 
    console.log("this is getting executed") 
    $.ajax({ 
      url: "/get_ecommdata/", 
      type: "get", 
      cache: "false", 
      dataType : 'json', 
      success: function(data) { 
       console.log("This is working fine") 
       alert(data) 
      }, 
      error:function(xhr, ajaxOptions, thrownError) { 
       console.log("this is error") 
       alert(xhr.status) 
      }, 
    }) 
}); 

示意图如下:

def get_ecommdata(request): 
    print "inside get_ecommdata" 
    tempdata = ['{"square": 0, "key": 0}', '{"square": 1, "key": 1}', '{"square": 4, "key": 2}'] 
    return HttpResponse(tempdata) 

状态代码为,但仍然是 “这是错误” 显示在控制台即其执行错误部分。

这里是我的理解:

状态代码是200,即服务器正常发送数据,但有一些问题识别的数据类型。 此代码适用于简单文本,但不适用于json。

我的问题

能有人给我关于Django的观点传递JSON数据阿贾克斯一些方向。我想我在这里犯了一个愚蠢的错误。

P.S.我已经浏览了其他类似的帖子(json,ajax,view),但没有一个迎合这个具体问题。

+0

使用JsonResponse:https://docs.djangoproject.com/en/1.8/ref/request-response/#jsonresponse-objects –

+0

似乎并没有一个有效的JSON来me.You应该把它包起来在[]中,加上周围没有单引号,看看我的答案如果它可以帮助你。 – cafebabe1991

回答

1

导入json模块

import json 

然后在您的请求方法试试这个

data = json.dumps([{"square": 0, "key": 0}, {"square": 1, "key": 1}, {"square": 4, "key": 2}])  

return HttpResponse(data, content_type="application/json") 

注意

使用单引号做为程式码中会导致如下输出

'["{\\"square\\": 0, \\"key\\": 0}", "{\\"square\\": 1, \\"key\\": 1}", "{\\"square\\": 4, \\"key\\": 2}"]' 

它对导引头的困惑,因此我使用了上述方法。但这取决于选择。

+1

感谢您的解决方案。使用json.dumps确实解决了我的问题。 备案。问题在django-view中。这里更新的代码工作正常。 'def get_ecommdata(request): print“inside get_ecommdata” tempdata = ['{“square”:0,“key”:0}','{“square”:1,“key”:1}', '{“square”:4,“key”:2}'] #tempdata =“hello” tempdata1 = json.dumps(tempdata) return HttpResponse(tempdata1,content_type =“application/json”)' – Conquistador

+0

Superb: - ),但我仍然建议避免使用引号,因为它会在结果中导致不必要的\\。你可以在你的案例中看到json.dumps的结果,它会包含令人困惑的双斜线。但是,如果你对它好,那么很好:-)但作为一个答案,我认为我们应该让他们知道它。说啥 ? – cafebabe1991

0
def get_ecommdata(request): 
    print "inside get_ecommdata" 
    list_square = [ 
     {"square": 0, "key": 0}, 
     {"square": 1, "key": 1}, 
     {"square": 4, "key": 2} 
    ] 
    data = json.dumps(list_square) 
    return HttpResponse(data, content_type='application/json')