Return data from html/js to python

>>> 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]}]

You can take the HTML data, and convert it into a dictionary, enabling you to do:
print x['x']

This is the starting point, create a socket in Python which listens to a port.
Then have it recieve data.

In Javascript, open a socket which can connect to a port (the one Python listens to).
Use, say: http://socket.io/

This is a pure socket-to-socket related issue?

A working relationship between Python and Javascript (on port 80):

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

There you got a socket listening to 80, connect to that and send whatever you want.

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();
}

For instance, where you can send the form data as a string, replacing “Form-data” and the response from Python can be put into “myDiv” 🙂

Leave a Comment