Javascript ajax等待文件更改

Javascript ajax等待文件更改,javascript,php,python,html,ajax,Javascript,Php,Python,Html,Ajax,我正在编写一个网站来控制我的树莓皮机器人。我正在使用.py脚本驱动两个步进电机,我称之为: sudo ./GPS.py forward 100 30 第一个参数是要走的路,第二个参数是要走多少步,最后一个参数是两步之间的延迟 脚本打开location.txt文件(看起来像“100/50/18”),并采用坐标x=100、y=50和Alpha=18度。然后移动,计算新的坐标并将其写入此文件 阅读脚本顶部的部分: fo = open("location.txt", "r") data = fo.re

我正在编写一个网站来控制我的树莓皮机器人。我正在使用.py脚本驱动两个步进电机,我称之为:

sudo ./GPS.py forward 100 30
第一个参数是要走的路,第二个参数是要走多少步,最后一个参数是两步之间的延迟

脚本打开location.txt文件(看起来像“100/50/18”),并采用坐标x=100、y=50和Alpha=18度。然后移动,计算新的坐标并将其写入此文件

阅读脚本顶部的部分:

fo = open("location.txt", "r")
data = fo.read()
fo.close()
coordinates= data.split("/")
temp1 = coordinates[0]
temp2 = coordinates[1]
temp3 = coordinates[2]
Alpha= float(temp3)
X = float(temp1)
Y = float(temp2)
然后它进行所有请求的移动和计算,最后将新的X、Y、Alpha保存回文件:

 fo =open("location.txt", "w")
 fo.write(str(X)+"/"+str(Y)+"/"+str(Alpha))
 fo.close
好吧,这在Putty中非常好用,但现在我想驾驶我的机器人通过网站,所以我制作了一个网站来控制它

但现在我有一个问题。现在我有这样的网站:

HTTP --> Javascript --> PHP --> .PY script to move robot.
{ date_updated: "13-11-2013 15:45:98",
  x_position: 105,
  y_position: 120,
  alpha: 123 }
这是可行的,但我不知道如何在我的网站上从location.txt刷新X,Y,Alpha坐标。我有一个想法:

Javascript运行.PY并等待它完成,然后JS open.txt并获取数据,最后为我的网页设置新的坐标。但我不知道怎么做。这等待着。PY结束真让我心烦

谢谢你的帮助! 哈欠2

附言


我在我的Raspberry Pi上安装了apache,我可以通过网页加载我的.py脚本,并且我可以打开.txt文件。

进行此操作的经典web方式是从客户端轮询,直到您被告知更改为止

例如

  • 调整文件,使其包含更新的日期和时间
  • 实现一个PHP脚本来打开文件,并将内容作为一个JSON对象(更新日期、X、Y和Alpha作为属性)
  • 加载页面时,加载位置并存储所有4个组件
  • 向服务器发送移动指令时,开始轮询更改-定期重新加载JSON对象,直到更新了日期更改的对象。然后,您可以停止轮询
  • 然后应存储此更新的位置并用于更新页面
  • 设置轮询的最大次数,如果达到最大次数,则放弃并出错
假设您的主页包含

<div id="locationInfo" />
在主页中,您可以使用jQuery创建一个脚本,该脚本将

上面真正缺少的是当更新日期改变时,反复轮询和中止的部分

@johnny craig在这里描述了一个投票的简单示例:

在这些示例中,一旦您获得了所需的数据(通过更新日期的变化识别),您就需要退出条件

它可能会工作,实现起来非常简单,但会受到来自网页的大量无用请求的影响。尽管要记住,网络做这种事情已经有很长一段时间了

或者,你可以了解所有关于它的HTML5,并在WebSocket上阅读。使用WebSocket,您可以从服务器端而不是客户端发起更新。所需的轮询更少,客户端的响应时间应该更好

以下内容将为您提供基本知识:


但是,如何强制.php等到.py完成?您不必这样做。您可以让PHP调用python脚本,然后立即返回页面的主要内容(减去位置数据),然后让客户端在位置信息可用时更新位置信息。噢,谢谢,但是这部分:“客户端在位置信息可用时更新位置信息”让我遇到了问题,现在我用“window.location.href=script.py?speed=XX&…”然后,php运行.py并立即返回主页,但如何知道.py何时完成?部分:“客户端在位置信息可用时更新位置信息“这正是最初给出的答案——如果不清楚的话,很抱歉。现在,您有了启动python脚本的功能,可以进入下一阶段了。我们的想法是编写一些可以通过javascript访问的内容,这些内容将以一种简单的格式(JSON)提供给您location.txt的内容。然后重复请求,直到更新为止。重新阅读最初的答案,知道你还没有实现这些,也许第二次会更有意义。
$.get( "getLocationInfo.php", function( data ) {
  var html = 'Location: ' + data.x_position + ', ' + data.y_position + ' @' + data.alpha
  $( "#locationInfo" ).html( html );
});