1

我正在使用 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 进行操作。

4

0 回答 0