Javascript 如何将JSON发送到我的python脚本?
目前,我正在使用此函数从chrome扩展发送JSON。这是javascript发送数据的客户端代码Javascript 如何将JSON发送到我的python脚本?,javascript,python,ajax,json,Javascript,Python,Ajax,Json,目前,我正在使用此函数从chrome扩展发送JSON。这是javascript发送数据的客户端代码 function callPython(){ var url = 'http://AWS_IPNUMBER/'; var data = {'bob':'foo','paul':'dog'}; $.ajax({ url: url, type: 'POST', contentType:'application/json',
function callPython(){
var url = 'http://AWS_IPNUMBER/';
var data = {'bob':'foo','paul':'dog'};
$.ajax({
url: url,
type: 'POST',
contentType:'application/json',
data: JSON.stringify(data),
dataType:'json',
success: function(data){
var jsonObj = $.parseJSON(data);
alert(jsonObj.encPassword);
},
failure: function(errorMsg) {
alert(errorMsg);
}
});
}
这是Python的服务器代码:
s = socket()
s.bind(('', 80))
s.listen(4)
ns, na = s.accept()
while True:
try:
data = ns.recv(8192)
except:
ns.close()
s.close()
break
data = json.loads(data)
print data
问题是,尽管它正在侦听,
data
在data=ns.recv(8192)
处为空。然后data=json.load(data)
不起作用,因为data
是空的。为什么会这样?我认为AWS上的安全组可能有问题,但如果我转到http://AWS_IPNUMBER/
我在运行python脚本时从浏览器中获取标题。您可能会更幸运地使用一个好的框架,如或
我这样说是因为在代码中,您试图用json.loads解析http POST。HTTP并不是那么简单。在到达主体之前,您需要处理请求和头,这可以分布在多个数据包中。当您可以从一个成熟的项目中设置一个符合标准的服务器时,为什么要尝试重新发明轮子呢 $.ajax函数将放置的数据是一个完整的HTTP请求,
json.loads()
无法理解。在这种情况下,您需要实例化一个HTTP服务器,该服务器将处理HTTP请求,然后使用json.loads()
处理HTTP负载,这对于如此“简单”的东西来说是必需的(可能它没有我想象的那么简单)。chrome的扩展是,用户填写表单,将数据发送给我,然后保存在数据库中(我不需要返回任何内容)。