我有一个由javascript函数填充的html表单。我有另一个javascript函数,它获取所有表单元素的值,并且当前只使用警报将它们显示回用户。使用以下代码通过python显示html页面:
import webbrowser
new = 2 #open new tab if possible
url = "form.html"
webbrowser.open(url, new=new)
这一切都运行良好,但我没有使用警报显示数据,我想将数据传递回python,但不知道如何。所有数据都存储在一个javascript数组中,所以我基本上只需传递这一段数据。
编辑:我不能使用任何外部库。
答案 0 :(得分:8)
>>> import json
>>> weird_json = '{"x": 1, "x": 2, "x": 3}'
>>> x = json.loads(weird_json)
>>> x
{u'x': 3}
>>> y = json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
>>> y
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]
您可以获取HTML数据,并将其转换为字典,使您能够:
print x['x']
这是起点,在Python中创建一个侦听端口的套接字。 然后让它收到数据。
在Javascript中,打开一个可以连接到端口的套接字(Python监听的端口)。 使用,说:http://socket.io/
这是一个纯粹的socket-to-socket相关问题?
from socket import *
import json
s = socket()
s.bind(('', 80))
s.listen(4)
ns, na = s.accept()
while 1:
try:
data = ns.recv(8192)
except:
ns.close()
s.close()
break
data = json.loads(data)
print data
你有一个套接字听80,连接到那个并发送你想要的任何东西。
function callPython()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Form-data",true);
xmlhttp.send();
}
例如,您可以将表单数据作为字符串发送,替换“表单数据”和Python的响应可以放入“myDiv”:)
答案 1 :(得分:2)