>>> 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/を使用します。
これは純粋なソケット間関連の問題ですか?
PythonとJavascriptの連携関係(ポート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
そこで、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」に入れることができます:)