2012-04-24 11 views
1

views.pyジャンゴするAJAX要求を行う:文字列サーバー

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]);  
    }); 

、私は非常にだったがコンテンツを含むアラートボックスを取得すると驚いた:

"[" 

私は配列の代わりに文字列を持っています、私は私にとって非常に奇妙で、間違いなく私が期待したものではありません。

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件のステータスを持っている理由私は理解していない:放火犯で

は、私は2つの、後続のGETリクエストを参照してください。私はこれがどのようにjsonを文字列として表示するのか分かりません。どんな助け?

+0

JSONは常に文字列です。常に。 –

+0

Ignacioは申し訳ありませんが、 "["の代わりに "foo"が警告で表示されることを期待しています。これがjqueryの仕組みです - jsonの文字列は評価され、成功したときに実行される関数に渡されます。 – mnowotka

+0

Aaaand ...どこで評価しますか? –

答えて

1

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

デフォルトでは、Djangoは任意のURLにスラッシュを追加します(common middlewareを参照)。あなたが代わりにmimetype、すなわちのcontent_typeを使用したい

return http.HttpResponse(json.dumps(res), content_type='application/json') 
+0

偉大な、感謝 - 2つの要求の問題を解決します。それでも、jsonの文字列がjQueryによって評価されない理由を理解できません。 – mnowotka

+0

私は答えを – bmihelac

+0

更新しました。私はjson 1.4.2で解析されたjsonが追加されたと思いますが、どのバージョンを使用していますか? – bmihelac

関連する問題