json是解决这个问题的答案吗:python程序将说话而javascript将倾听?
一个月前困扰我的问题现在依然困扰着我。我知道我在这个网站上问过好几个相关的问题,对此我真的很抱歉。你们的建议都很棒,但我还是没找到答案。我现在意识到,这主要是因为我没有把问题说清楚,为此我感到抱歉。
为了让大家更好地理解情况,我来简单描述一下:我有两个服务器端的脚本想要运行。
一个持续输出一些数字的Python程序/脚本
根据这个Python脚本的输出,一个JavaScript脚本会在网页上执行一些操作(比如,改变背景颜色、显示警告信息、修改一些文本)
我研究了之前帖子里的回复,发现我想实现的功能大致可以通过JSON来完成。我理解JSON可以把“特定程序”的变量转换成一种更“标准或通用”的格式。这样,两种不同的程序就能“交流”了,因为它们现在说的是同一种“语言”。
那么问题来了,我该如何让它们沟通呢?这两个服务器端脚本之间的“手机”是什么?它们真的需要一个吗?
谢谢大家!
5 个回答
我对Javascript和json不太了解,但是……如果你见过类似Unix的操作系统,你就知道什么是管道。就像这样:program1 | program2 | program3……为什么不直接用管道把Python和Javascript程序连接起来呢?第一个程序把结果写到标准输出(stdout),而下一个程序则从标准输入(stdin)读取数据。
我猜你是说:Python在网络服务器上运行,而Javascript是在用户的网页浏览器中运行。
因为每个浏览器都不一样(比如IE6很糟糕,而Chrome很好),所以人们找到很多方法来“把这个手机放到位”。这些技术叫做AJAX和COMET。并没有一个统一的“手机”,而是有很多种!希望你能找到一个库,选择适合浏览器的正确技术,这样你只需要关注消息的内容就行了。
Comet技术比较复杂,但它可以让服务器主动“推送”消息给客户端。
而AJAX相对简单一些——你只需要定期从服务器“拉取”消息。
建议你先从AJAX开始,如果真的需要再考虑Comet。可以先让客户端(Javascript)发一个“GET”请求,看看号码有没有变化。
如果我理解你的问题,"手机"指的是TCP/IP。JavaScript不是在服务器上运行的,它是在客户端运行的,主要是根据从服务器下载的json数据来改变客户端浏览器显示的内容,而这些数据在这个例子中是由Python生成的。
这个问题提供了一个相关的例子,虽然有点技术性:Python和JavaScript之间的JSON日期时间
这里有一个非常基础的教程,讲解如何使用Python和JavaScript创建动态网页。虽然它似乎没有使用json,但应该能让你熟悉基本概念。一旦你理解了这些内容,使用json来传输更复杂的数据应该就比较简单了。
http://kooneiform.wordpress.com/2010/02/28/python-and-ajax-for-beginners-with-webpy-and-jquery/