1

视图.py:

def get_accounts( request ):
    if request.is_ajax():
        res = ["foo","bar"]
        json = simplejson.dumps(res)
        return HttpResponse(json, mimetype='application/json')
    return HttpResponseNotFound

网址.py:

   ( r'^get_accounts/$', 'get_accounts'),

客户端.html:

$.get('/django/backoffice/bopanel/get_accounts',{'acc':$('.nr').text().replace(/^\s+||\s+$/g,'')}, function(data) {
  alert(data[0]);      
  });

我很惊讶收到一个包含内容的警告框:

"["

什么意味着我得到了字符串而不是数组,这对我来说很奇怪,而且绝对不是我所期望的。

在萤火虫中,我看到两个后续的 GET 请求:

GET http://127.0.0.1:8000/django/backoffice/bopanel/...nts?acc=17114%2FF01055%2FTP%0A%09%09++++++++++++
301 MOVED PERMANENTLY
    24ms

GET http://127.0.0.1:8000/django/backoffice/bopanel/...ts/?acc=17114%2FF01055%2FTP%0A%09%09++++++++++++
200 OK
    16ms

我不明白为什么我收到两个请求以及为什么第一个请求有 301 状态。我不明白这如何使 json 显示为字符串。有什么帮助吗?

4

1 回答 1

1

我不明白为什么我收到两个请求以及为什么第一个请求有 301 状态。

默认情况下,Django 会在任何没有斜杠的 URL 上附加一个斜杠(参见common middleware)。

您想使用content_type而不是mimetype,即:

return http.HttpResponse(json.dumps(res), content_type='application/json')
于 2012-04-24T07:10:43.343 回答