如何在没有web服务器的情况下将变量数据从Python传输到Javascript
How to transfer variable data from Python to Javascript without a web server?
我正在自动生成一个本地HTML文件,我需要的所有相关数据都在Python脚本中。如果没有合适的web服务器,我不确定如何进行,因为否则我认为AJAX/json解决方案是可能的。
基本上,在python中,我有一些列表和字典对象,需要使用它们来使用javascript和HTML创建图形。我的一个解决方案(真的很糟糕)是使用字符串从Python中编写HTML/JS,然后保存到文件中。
我还能在这里做什么?我确信Javascript没有文件I/O功能。
谢谢。
您只需要将python代码中的数据转换为javascript可读的形式,对吧?
为什么不直接获取数据结构,将其转换为JSON,然后编写.html
文件中包含的.js
文件,即简单的var data = { json: "object here" };
您对使用某些模板系统有什么看法?它将适合你的需要。
我知道你特别提到了"没有web服务器",但除非你真的想走自己的路,并将其过度复杂化,并限制未来使用的灵活性:-
你能不能不使用一个非常简单的网络服务器,比如:http://docs.python.org/library/simplehttpserver.html?这样,如果你需要公开网站,你就已经有了URL来设置一个合适的网络服务器。
也许你可以写一个cookie,然后通过JavaScript访问它?类似于这里的SO答案?
您可以使用Python的JSON编码器和解码器库。通过这种方式,您可以将Python数据编码为JSON格式,并将其包含在HTML文档中。然后,您将在HTML文件中使用Javascript来处理JSON编码的数据。
http://docs.python.org/library/json.html
如果这只需要用于localhost,则可以执行以下操作。要访问,您需要拨打http://localhost:8080/foo
;然而,由于跨站点注入保护,这可能会导致一些问题;这些问题很容易通过谷歌搜索来解决。
在JS方面,您可以进行这样的AJAX调用(假设jQuery)
$.ajax('http://localhost:8080/foo', function (data) {console.log(data)});
然后在Python方面,您将把这个文件与您要在计算机上使用的html文件(index.html)放在同一目录中,并执行它
import BaseHTTPServer
import json
class WebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
desiredDict = {'something':'sent to JS'}
if self.path == '/foo':
self.send_response(200)
self.send_header("Content-type", "application/json")
self.end_headers()
self.wfile.write(json.dumps(desiredDict))
else:
if self.path == '/index.html' or self.path == '/':
htmlFile = open('index.html', 'rb')
self.send_response(200)
self.send_header("Content-type", "text/html")
self.send_header("Access-Control-Allow-Origin","http://localhost:8080/")
self.end_headers()
self.wfile.write(htmlFile.read())
else:
self.send_error(404)
server = BaseHTTPServer.HTTPServer(('',8080), WebRequestHandler)
server.serve_forever()
- 当JSON数据=变量时,需要执行循环
- 如何将数据/变量从file_controller.rb传递到application.js
- 当移动到“外部”版本时,“内部”成功 AJAX 中的“数据”变量应该更改为什么
- 从 ajax jQuery 中的数据变量中获取属性
- 将脚本属性(数据变量)传递到 head.js
- 2 个数据变量的 mrender 不起作用
- 如何在 ng-repeat 过滤器中传递 HoDjango views.py 上下文数据变量
- 以简单的方式将多个数据变量传递给 AJAX 函数
- 如何从每个带有类的元素中获取数据变量
- 根据数据变量的d3网络图的颜色链接
- 如何在不同的网站之间共享数据变量或本地存储?iframe?postMessage
- 将数据变量从PHP传递到jquery ui对话框
- 数据变量没有从Vue.js中的监视器上的计算属性更新
- 弹出窗口数据变量传递
- 如何使用jquery发布输入数据变量
- vue .js:如何在.vue模板文件中的vue方法中设置数据变量
- JSON jQuery数据变量
- 从onclick()提取数据变量
- 忽略下划线模板中未定义的数据/变量
- 如何使用php数据变量创建条形图