簡體   English   中英

Python CGI和JSON轉儲

[英]Python CGI and json dumps

我將python用於基於BaseHTTPServer和CGIHTTPServer的簡易Web應用程序。

我對ajax調用有一個小問題,該調用檢索字典以填充選擇的小部件。 被“列出”選擇ID,這是動態填充選項的javascript代碼:

$.getJSON("/web/ajax/list.py", function(result) {
    $.each(result, function(key, value){
        $("#list").append("<option id=" + key + ">" + value + "</option>");
    });
});

在服務器端文件list.py中,我不能簡單地使用json.dumps轉儲字典內容,但是在這樣做之前,我不得不打印一些空行:

options = {}
options[1] = "option 1"
options[2] = "option 2"
options[3] = "option 3"

# Whitout these two lines it doesn't work!!
print """
"""

import json
print json.dumps(options)

有什么想法為什么僅僅通過轉儲字典就行不通?

我想擺脫多余的印刷品。

非常接近...沒有HTTP標頭“ Length”,雖然Content-Length不是嚴格要求的,但是如果您知道的話,可以這樣添加:

print "Status: 200 OK"
print "Content-Type: application/json"
print "Content-Length: %d" % (len(body))
print ""
print body

cgi對應該為服務器打印的內容有一個非常嚴格的想法。 具體來說,您需要提供一組響應頭,響應主體以及兩者之間的空行,以便服務器知道標頭在哪里停止以及主體在哪里開始。

也就是說,新生產線不是多余的; 實際上,您可能應該添加更多:

body = json.dumps(...)

print "Status: 200 OK"
print "Content-Type: application/json"
print "Length:", len(body)
print ""
print body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM