簡體   English   中英

將字符串從Python傳遞給Javascript

[英]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在pythonhttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM