1

views.py:

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

urls.py:

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

client.html:

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

コンテンツが記載されたアラートボックスが表示されたので、とても驚きました。

"["

つまり、配列ではなく文字列を取得したということです。これは私にとって非常に奇妙で、期待したものではありませんでした。

ファイアバグでは、2つの後続の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

なぜ2つのリクエストを受け取るのか、最初のリクエストが301ステータスになるのかわかりません。これによりjsonが文字列として表示される方法がわかりません。何か助けはありますか?

4

1 に答える 1

1

なぜ2つのリクエストを受け取るのか、最初のリクエストが301ステータスになるのかわかりません。

Djangoはデフォルトで、スラッシュがないURLにスラッシュを追加します(一般的なミドルウェアを参照)。

content_typeの代わりに使用したいmimetype、すなわち:

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