json就是这个问题的答案:python程序会说话,javascript会听吗?

json就是这个问题的答案:python程序会说话,javascript会听吗?,javascript,python,json,Javascript,Python,Json,一个月前困扰我的同样问题现在仍然困扰着我。我知道我在这个网站上问了几个关于这个的问题,对此我真的很抱歉。你的建议都很好,但答案仍然难以捉摸。我现在意识到这是我不能正确表达我的问题的直接结果,为此我感到抱歉 为了让大家对事情有一个大致的了解,我来看看:情况是这样的,我有两个服务器端脚本要运行 连续输出一些数字的python程序/脚本 基于该python脚本的输出,javascript脚本将在网页上执行某些操作(例如,更改背景颜色、显示警报消息、更改某些文本) 我研究了对我之前帖子的回复,发现我想要

一个月前困扰我的同样问题现在仍然困扰着我。我知道我在这个网站上问了几个关于这个的问题,对此我真的很抱歉。你的建议都很好,但答案仍然难以捉摸。我现在意识到这是我不能正确表达我的问题的直接结果,为此我感到抱歉

为了让大家对事情有一个大致的了解,我来看看:情况是这样的,我有两个服务器端脚本要运行

  • 连续输出一些数字的python程序/脚本

  • 基于该python脚本的输出,javascript脚本将在网页上执行某些操作(例如,更改背景颜色、显示警报消息、更改某些文本)

  • 我研究了对我之前帖子的回复,发现我想要实现的或多或少是通过json实现的。据我所知,json将“特定于程序”的变量转换为更“标准、通用或全局”的格式。 因此,两个不同的程序现在有了相互“交谈”的手段,因为它们现在讲的是相同的“语言”

    那么问题是,我究竟如何促进他们的沟通呢?这些服务器端脚本之间的“手机”是什么?他们需要一个吗


    谢谢大家!

    我不知道Javascript或json,但是。。。
    如果您见过类似Unix的操作系统,那么您就知道管道。像程序1 |程序2 |程序3。。。为什么不直接用管道连接Python和Javascript程序呢?第一个写入标准输出,下一个读取标准输出

    这可能不是你想要的答案,没有你以前帖子的链接,我没有太多要说的,但是

    javascript是客户端。我可以用两种不同的方式来解释你的问题

  • 您的python脚本正在计算机上运行,您需要一个脚本来实际更改当前的浏览器窗口

    不太确定,但写一个浏览器插件可能是答案

  • 您的python脚本正在服务器上运行,运行该脚本后,您希望更改站点的显示以供查看人员

    在这种情况下,您可以在站点上使用ajax轮询(或类似的轮询)。让您的站点使用ajax轮询服务器,调用一个服务器方法来检查脚本的输出(可能写入文件?),然后查看脚本是否已更改


  • 如果我明白你的意思,“手机”就是TCP/IP。javascript不是服务器端的;它在客户端运行,并根据从服务器下载的json数据(在本例中是由Python生成的数据)更改客户端浏览器显示的内容

    这个问题提供了一个相关的例子,虽然有点技术性:

    这里有一个非常基础的教程,解释如何使用python和javascript创建动态网页。它似乎没有使用json,但它应该让您熟悉基本原理。一旦您了解了其中的内容,使用json传输更复杂的数据应该相当简单


    当两个进程需要通信时,它们需要确定一种通用/共享的方式来表示内容,以及一种协议来交换这些内容

    在您的情况下,因为其中一个进程是浏览器,所以选择的协议是http。因此,浏览器需要对python进程执行http请求或常规http请求

    这个python进程需要以某种方式通过http公开

    有几种方法可以用python构建web服务器。您应该阅读这篇文章:作为一个跳转起点

    一旦你有了这个,你的浏览器将能够向你的服务器发出HTTP GET请求,你的服务器可以用字符串回复

    这根绳子可以是你喜欢的任何东西。然而,如果您的答案包含结构化数据,那么使用XML表示法或json表示法可能是一个良好的开端

    Json(代表Javascript对象表示法)在Javascript中非常容易使用,这就是为什么许多人建议您选择这种表示法

    我希望这对你有帮助


    Jérome wagner

    我想你的意思是:Python在web服务器上,Javascript在客户端的web浏览器中运行

    因为浏览器都是不同的(IE6很糟糕,Chrome很棒),人们发现有很多方法可以“破解”这个“手机”。这些技术称为AJAX和COMET技术。没有一部“手机”,而是一大堆!希望您能找到一个库来为浏览器选择正确的技术,您只需担心消息

    Comet更难做到,但它允许服务器将消息“推送”到客户端

    Ajax可能更容易——您只需定期从服务器“拉”出消息


    从Ajax开始,如果您真的需要comet,请查看它。首先,让客户端(javascript)发出一个“GET”请求,看看数字是否已更改。

    除非我误解了您的意思,否则这不会是两个服务器端脚本;javascript将是客户端的。感谢您的快速回复!不幸的是,如果我使用管道,我相信javascript也必须支持它。我不认为javscript有管道,但很抱歉,由于混淆和阅读您的解释,javascript确实是客户端。谢谢“手机”应该是HTTP。@Matt Ball,是的,HTTP。。。通过TCP/IP。它实际上是(2)。事实上,ajax轮询以前就被推荐过,我会检查一下。谢谢从概念上理解,包含脚本的html页面是由客户机下载的,并且您的服务器除了提供新页面或使用初始页面编写ajax请求之外,无法在该客户机上执行任何其他javascript。您的ajax请求可以调用服务器,但是