【发布时间】:2014-01-16 21:20:53
【问题描述】:
更新更新问题: 我有一个 JQuery $.ajax 调用,如下所示:
$.ajax({
url: 'http://website.domain.gov/cgi-bin/myFolder/script.py',
type: 'post',
dataType: 'json',
data:{'lat':'30.5', 'lon':'-80.2'},
success: function(response){alert(response.data.lat);
otherFunction();}
});
在 script.py 中,它自己运行没有错误,我执行以下操作:
#!/usr/bin/python
import sys, json, cgi
import os
fs = cgi.FieldStorage()
d = {}
for k in fs.keys():
d[k] = fs.getvalue(k)
ilat = d['lat']
ilon = d['lon']
pntstr = ilat + ',' + ilon
my_list = []
#os.chdir('..'); os.chdir('..')
#os.chdir('a_place/where_data/exists')
# If you'd like to run this code, you probably don't have grib files or 'degrib', so another unix command will have to be utilized to open some sort of dummy data
f = os.popen('degrib '+'datafilename '+
'options '+ pntstr)
out = f.read()
# data has 5 columns, many rows
j = 0
while j < (5*num_lines_to_read):
my_list.append(out[j+4])
j += 5
f.close()
#os.chdir('..') etc until I get back to /cgi-bin/myFolder directory...
x = my_list[0]
result = {}
result['data'] = d
sys.stdout.write('Content-Type: application/json\n\n')
sys.stdout.write(json.dumps(result))
sys.stdout.close()
注意:'d' 是虚拟值,与 'my_list' 无关...暂时
当我更新正在开发的网页并尝试从 Python 返回“d”(以警报的形式)时,我收到“非常有用”的服务器 500 错误。
我已将问题缩小到“x = my_list[0]”行。如果我改为输入“x = my_list”,则不会出现错误。当我尝试索引“my_list”时,sys.stdout.write() only 停止工作。我尝试打印列表。它不是空的,并且包含具有预期类型的预期值。如果我将它放在 之前 "x = my_list[0]",我会从 sys.stdout.write() 获得成功的输出。问题是,我最终将使用“my_list”来创建写入标准输出的输出。
我在这里遗漏了一些晦涩的文件 I/O 吗?
【问题讨论】:
-
-1 “不起作用”不是对软件相关问题的描述。如果您正在寻找算命先生,这里有很多,但 Stackoverflow 上没有。如果你想在你的情况下得到帮助,你应该首先描述:你得到了什么输出,你期望什么?
-
正如我上面所说,我网页上的预期输出是一个“虚拟值”,“d”(以 Javascript 警报的形式)。相反,我在 Chrome 错误控制台中收到服务器 500 错误。因此,我被引导相信某些东西导致 sys.stdout.write() “不起作用”。既然您要查找的内容已向您指出,您还有什么需要回答的问题吗?