我有一个由javascript函数填充的html表单。我还有另一个javascript函数,可获取所有表单元素的值,并且当前仅使用警报将其显示给用户。通过python使用以下代码显示html页面:
import webbrowser new = 2 #open new tab if possible url = "form.html" webbrowser.open(url, new=new)
这一切都很好,但是我不想使用警报来显示数据,而是想将数据传递回python,但不知道如何。所有数据都存储在javascript数组中,因此我基本上只需要传递这一数据即可。
编辑:我不能使用任何外部库。
>>> 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']
print x['x']
这是起点,在Python中创建一个侦听端口的套接字。然后接收数据。
在Javascript中,打开一个可以连接到端口的套接字(一个Python侦听)。使用说:http://socket.io/
这是一个纯粹的套接字到套接字相关的问题?
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(); }
例如,您可以在其中以字符串形式发送表单数据,替换“ Form-data”,然后将来自Python的响应放入“ myDiv”中:)