2009-07-02 49 views
2

我正在爲Python中的GAE上的web應用程序中的一些AJAX相關事物製作API。設置內容類型爲「應用/ JSON」和訪問我的網址後,兩個直這是一種在Python/GAE中返回JSON解析JavaScript的正確方法嗎?

http://mysite.com/api?method=theMethod&param=firstParam 

-I我被提示有「保存文件」對話框,而不是看到顯示的JSON對象。該文件在記事本中打開時包含JSON對象。

這是一種正確的方式來從Python使用GAE返回JSON以便在JavaScript中解析嗎?

from django.utils import simplejson 
self.response.headers['Content-Type'] = 'application/json' 
jsonData = {"foo" : "bar"} 
self.response.out.write(simplejson.dumps(jsonData)) 

我注意到,使用其他API時,從別的地方如Flickr,我的瀏覽器顯示的JSON對象,而不是要求我保存文件。這種行爲促使我調查我的實施。我唯一的想法是這與JSONP實現有關。

rfc4627判斷,我應該使用'application/json'。

回答

4

這是正確的方式,爲json的MIME類型是應用程序/ JSON不是文本/ JSON和NEVER文本/ HTML。 http://tools.ietf.org/html/rfc4627開始以「爲JavaScript對象符號的應用/ JSON媒體類型(JSON)」

閱讀this /詳情選項

1

我認爲Flickr API返回的json類型爲'text/plain',然後將顯示爲文本。你可以嘗試'text/json'作爲中間點。在你的情況下,被輕鬆查看可能勝過正確。

同時認爲,應該任何客戶端要求的內容類型是「應用/ JSON的」,並拒絕與「text/plain的」客戶端應特別要求它想要的類型沒有「/」工作。這可能是您在準備響應的內容類型時尋找的情況,並且您可以相應地記錄您的服務。

參閱要求:

http://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=cecc9218c59188ebc6150eff9cd908dc 

請求頭

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
Referer:http://www.flickr.com/services/api/response.json.html 
User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.18 (KHTML, like Gecko) Version/4.0.1 Safari/530.18 

響應頭

Connection:close 
Content-Encoding:gzip 
Content-Length:134 
Content-Type:text/plain; charset=utf-8 
Date:Thu, 02 Jul 2009 03:19:34 GMT 
P3p:policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" 
Vary:Accept-Encoding 

內容

jsonFlickrApi({"method":{"_content":"flickr.test.echo"}, "format":{"_content":"json"}, "api_key":{"_content":"cecc9218c59188ebc6150eff9cd908dc"}, "stat":"ok"}) 
+0

這些是我發現了太多,這使我懷疑我的執行效果。 – 2009-07-02 03:30:33

相關問題