2011-07-02 28 views
0

我從互聯網上閱讀了關於JSON的內容,但仍然沒有掌握它。我讀這篇文章與JSON數據和Django ajax請求中的正常數據相混淆

http://webcloud.se/log/AJAX-in-Django-with-jQuery/

我無法理解其中的功能是使用JSON

第一部分
def xhr_test(request, format): 
    if request.is_ajax(): 
     if format == 'xml': 
      mimetype = 'application/xml' 
     if format == 'json': 
      mimetype = 'application/javascript' 
     data = serializers.serialize(format, ExampleModel.objects.all()) 
     return HttpResponse(data,mimetype) 
    # If you want to prevent non XHR calls 
    else: 
     return HttpResponse(status=400) 

我的主要問題是

  1. 從那裏功能越來越format變量
  2. 格式是json意味着給函數的數據是JSON或數據將被recived是JSON
  3. 誰能給我簡單的例子,這將是這個函數的輸出中 data = serializers.serialize(format, ExampleModel.objects.all())
  4. 我將如何使用這些數據時,我得到響應在jQuery函數
  5. ,如果我沒有在上面的函數中使用JSON那麼如何將輸入和響應後面會chnage

感謝

回答

1
  1. 從那裏功能越來越格式可變

在實踐中,有很多方面,這格式可以被填充。 HTTP提供了一個Accept:標頭,請求可以用來指示首選的Content-Type作爲響應。在客戶端上,您可以使用xhr.setRequestHeader('accept', 'application/json')來告訴服務器您希望以json格式進行響應。但實際上,很少有框架實際執行此操作。這是Django的,參數視圖功能URL配置,通常設置,您可以製作一個URL配置是這樣的:

urlpatterns = patterns('', 
    # ... 
    (r'^xhr_test.(?<format>.*)$', 'path.to.xhr_test'), 
) 

2。請問格式JSON意味着給函數的數據是JSON或數據將被recived是JSON

這種特殊的觀點並沒有做任何事情與請求體,並在肯定是提供一個響應主體提供format

4。我將如何使用這些數據時,我得到的是根據您的請求需要多麼複雜的是反應在jQuery函數

,您可以使用jQuery.getJSON,這將通過你的回調與從解析JSON導致常規的JavaScript對象。如果您需要做更多工作才能獲得正確的請求,則可以使用jQuery.parseJSON來處理json數據,並且這將返回相同的JavaScript對象。

+0

非常感謝您的詳細解釋 –

0
  1. 從urlconf中,就像它在它下面的文章中所說的那樣。
  2. 查詢集將被序列化爲JSON。
  3. 它將是以XML或JSON表示的查詢集。 python manage.py shell是你的朋友。
  4. 你會解碼它,然後遍歷它。
  5. 您需要找到一些其他格式來代替它。
+0

其實我想看看點3,4,5的示例,以便我能更好地理解。如果這太多,那麼你可以指出一些互聯網資源。我覺得我需要在SO中提出更多的問題來理解你的單行答案:) –

+0

3號顯示你如何得到它的一個例子。數字4是對解碼庫和「for」循環的調用。 5號站在自己的立場上;如果你不知道任何其他的序列化格式,那麼我建議你把它放在腦海中。 –

+0

Ignacio Vazquez-Abrams請不要介意,但我已經多次看到您的答案阻止某人提供詳細的答案。我不是說你的答案是錯誤的,但有時用戶提出問題與我一樣非常愚蠢,需要詳細解釋。一旦你給出答案,沒有人增加更多的答案,因爲他們都尊重你的repuataion。我相信TokenGuy會對第3,5點做出解釋,但他並不是因爲他不想反對你。 –