[英]Passing a string from Python to Javascript
我試圖通過ajax POST請求將字符串從Python傳遞給Javascript,但我發現了嚴重的困難。
我已經嘗試過使用和不使用JSON。
這是代碼
JAVASCRIPT
$.ajax({
url: url, #url of the python server and file
type: "POST",
data: {'data1': "hey"},
success: function (response) {
console.log(" response ----> "+JSON.parse(response));
console.log(" response no JSON ---> " +response);
},
error: function (xhr, errmsg, err) {
console.log("errmsg");
}
});
蟒蛇
import json
print "Access-Control-Allow-Origin: *";
if form.getvalue("data1") == "hey":
out = {'key': 'value', 'key2': 4}
print json.dumps(out)
結果是一個空的JSON。 當我在javascript中執行類似JSON.parse的操作時,我得到意外的輸入錯誤結束,當我嘗試獲取響應數據的長度時,我得到的大小是0.我想客戶端服務器應該有一些問題通信(我使用CGIHTTPServer)或者python或javascript期望的數據類型可能有問題。
我也試過沒有JSON,像Python一樣
print "heyyyyy"
使用Javascript
alert(response) //case of success
但我也有一個空字符串。
能不能給我一些處理這個問題的建議? 非常感謝!
您可能想比較兩個代碼片段CGIHTTPRequestHandler在python和http://uthcode.blogspot.com/2009/03/simple-cgihttpserver-and-client-in.html中 運行php或python腳本 。
沒有足夠的代碼來告訴您的請求處理代碼在哪里,但如果它在繼承自CGIHTTPRequestHandler
的類中,那么您需要使用self.wfile.write(json.dumps(out))
等。
我設法使用Django Framework中的HTTPResponse方法解決了這個問題。
現在它與此非常相似
PYTHON(用JSON回答客戶端)
from django.http import HttpResponse
...
data = {}
data['key1'] = 'value1'
data['key2'] = 'value2'
.....
response = HttpResponse(json.dumps(data), content_type = "application/json")
print response;
JAVASCRIPT(退休和閱讀JSON)
success(response)
alert(JSON.stringify(response));
或者,如果我只想發送一個字符串或沒有JSON的整數
PYTHON(沒有JSON)
response = HttpResponse("ayyyyy", content_type="text/plain")
print response
JAVASCRIPT(檢索字符串或值)
success: function (response) {
alert(response);
這非常好用,在我看來它非常簡單易讀!
而不是print json.dumps(out)
你應該使用return json.dumps(out)
該print
只會在Python的控制台顯示它,就像console
中的JavaScript。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.