2017-03-01 5 views
0

ブラウザ側でデータを使用しようとすると、クライアント側でpythonスクリプトによって送信されたときに奇妙な動作が検出されました。PythonでのAjax成功関数:奇妙な振る舞い

AJAX呼び出しがある:

$.ajax({ 
    async: true, 
    type: "POST", 
    url: "/path/cgi-bin/pyscript.py", 
    data: JSON.stringify(my_array), 
    dataType: "html", 
    success : function(data) { 
     document.getElementById("ajaxAnchor").innerHTML = data + "Some random string to test display" 
    } 
}); 

}

私はPythonスクリプトに戻っdataprint()の結果を送信するために望んでいたが、非常に特定のケースでのみ動作。印刷されたデータを返信するには、最後に\nで実行されたprint()が存在する必要があります。

print("This line won't be sent to browser but is necessary \n") 
    print("This text will be sent back") 

そして次の例では動作しませんので、それは、改行を追加する方法についてだけではありません。

print("\n This text will not be sent back") 

正常に送信される以下のものについて、「無駄」の行がなければなりません。

print("This line won't be sent to browser but is necessary") 
    print("\n This text will be sent back") 

は、私は、Ajaxを使用して初心者ですので、誰でもこの問題が発生した理由を説明する気にならば、私は基本的なロジックを理解したいと思います。ありがとう!

答えて

1

あなたはCGI-Protokollを使用しています。最初にHTTPヘッダーを送信する必要があります.HTTPヘッダーは空の行で終了します。最小の答えは:

print("200 OK\n") 
print("Your Text.") 
+0

ありがとうございます。 CGIプロトコルを調べてみると、最初の行が必要です(ここではhttps://www.tutorialspoint.com/python/python_cgi_programming.htm)。興味深いことに、興味深いことに、 (Content-type:text/html \ r \ n \ r \ nなど)を指定する有用なHTTPヘッダーが実際に含まれています。 – sc28