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 を使用してこれを行うのはこれが初めてだと思います。