将字符串从Python传递到Javascript

时间:2015-07-21 11:35:24

标签: javascript jquery ajax json python-2.7

我正在尝试通过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");
    }
});

的Python

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

但我也有一个空字符串。

你能否给我一些处理这个问题的建议? 非常感谢!

3 个答案:

答案 0 :(得分:1)

您可能希望比较代码CGIHTTPRequestHandler run php or python script in pythonhttp://uthcode.blogspot.com/2009/03/simple-cgihttpserver-and-client-in.html的两个代码段。

没有足够的代码来说明您的请求处理代码的位置,但是如果它位于继承自CGIHTTPRequestHandler的类中,那么您需要使用self.wfile.write(json.dumps(out))等。

答案 1 :(得分:1)

我设法使用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);

这非常好用,在我看来它非常简单易读!

答案 2 :(得分:0)

而不是print json.dumps(out),您应该使用return json.dumps(out)

print只会在python的控制台中显示它,就像javascript中的console一样。