我正在使用 JQuery 向 Python 脚本发出 AJAX 请求。在完全无法让请求成功完成并发送响应后,我重新开始,看看我是否能准确找出导致问题的原因。我的 AJAX 调用如下所示:
$.ajax({url:'http://localhost/cgi-bin/ajaxtest.py',
type: 'POST',
data: {sources:addressList,number:numAddr},
}).done(function(data){
alert (data);
}).fail(function(){alert("error");}).always(function(data,textStatus,jqXHR){alert(jqXHR.status)});
所以本质上我正在调用ajaxtest.py
脚本,并发布到它addressList
,这是一个带有分隔符的字符串\t
,以及numAddr
,它是地址的数量addressList
现在我开始使用我的 Python 脚本非常基础。事实上,我对传递的值根本没有做任何事情。我开始使用的基本脚本如下所示:
#!/Users/myname/Python/Python
import telnetlib
import sys
import cgi
import cgitb
from multiprocessing import Pool
cgitb.enable()
print "Content-type: text/html\n"
result_list = []
def counter(x):
return x*x
def log_result(result):
result_list.append(result)
if __name__ == '__main__':
pool=Pool(processes=4)
for x in range(0, 4):
pool.apply_async(counter,args = (x,),callback = log_result)
result_list.append("ho")
pool.close()
pool.join()
print(result_list)
这个脚本并不是真正设计用来做任何实际的事情,而是更多地测试什么有效,什么无效,在这种情况下,看看池函数是否导致了我之前的问题。事实证明它们不是;当我的 javascript 调用该脚本时,该脚本运行良好,给出了正确的响应,并且 AJAX 状态代码使其变为 200。
当我尝试对通过 AJAX 发布的字符串或整数执行某些操作时,问题就出现了。每当我将这一行添加data=cgi.FieldStorage()
到脚本中时,它似乎都会卡住。如果重要,我在下面添加了它cgitb.enable()
。进行 AJAX 调用时,什么也没有发生,然后当我关闭或刷新页面时,该.fail
方法启动。我不确定为什么会发生这种情况,因为所做的唯一更改是添加变量来保存什么已发布。
有什么我想念的吗?我以前成功地使用过 AJAX,尽管我相信这是我第一次通过 JQuery 进行操作。