2017-03-01 41 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" 
    } 
}); 

}

我想送回到data在Python腳本print()的結果,但在一個不尋常的特殊情況這僅適用。對於要發送的打印數據,最後必須首先存在print(),其中\n執行。

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-Header,它由一個空行終止。最小的答案是:

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

感謝您的輸入。縱觀CGI協議,我發現了一些關於_why_的解釋,第一行是必要的[這裏](https://www.tutorialspoint.com/python/python_cgi_programming.htm),儘管有趣的是,無論是否行實際上包含一個指定內容類型的有用的HTTP頭(例如Content-type:text/html \ r \ n \ r \ n)。 – sc28