Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ApacheVelocity中从.vm文件中获取整个HTML?_Javascript_Html_Velocity - Fatal编程技术网

Javascript 如何在ApacheVelocity中从.vm文件中获取整个HTML?

Javascript 如何在ApacheVelocity中从.vm文件中获取整个HTML?,javascript,html,velocity,Javascript,Html,Velocity,我将非常感谢您对我的用例的帮助。我有一个Servlet,它在ApacheVelocity模板(.vm)文件中使用javascript呈现一些信息 现在,在我将这个模板返回到浏览器之前,我想将整个HTML存储到我的本地文件系统中,我需要从.vm模板访问整个HTML。我一直在做最后一步。Web应用程序是客户端⟷服务器应用程序,这意味着客户端(即您的浏览器)和web服务器之间存在明显的分离。服务器和您在浏览器中看到的HTML之间没有直接连接 尝试将过程可视化: 用户试图打开网页,因此浏览器向服务器发送

我将非常感谢您对我的用例的帮助。我有一个Servlet,它在ApacheVelocity模板(.vm)文件中使用javascript呈现一些信息


现在,在我将这个模板返回到浏览器之前,我想将整个HTML存储到我的本地文件系统中,我需要从.vm模板访问整个HTML。我一直在做最后一步。

Web应用程序是客户端⟷服务器应用程序,这意味着客户端(即您的浏览器)和web服务器之间存在明显的分离。服务器和您在浏览器中看到的HTML之间没有直接连接

尝试将过程可视化:

  • 用户试图打开网页,因此浏览器向服务器发送HTTP请求
  • 服务器处理请求的URL并确定它应该转到处理velocity模板的servlet,并确定应该用于呈现响应的
    .vm
    文件
  • 服务器上的servlet读取
    .vm
    文件,并将其呈现为HTML的字符串表示形式
  • HTML将在HTTP响应中发送到客户端。从现在起,服务器与该HTML没有连接
  • 浏览器从响应中读取HTML,对其进行解析并显示
  • 与该HTML关联的JavaScript资源也从服务器获取、解析和执行(在客户端浏览器中)
  • Velocity模板(或服务器上的任何其他代码)无法访问浏览器中的HTML,除非浏览器在另一个请求中显式地将其发送回服务器

    您可以做的是:

  • 编写另一段JavaScript代码来侦听
    单击事件
  • JS从您的目标元素获取序列化HTML,类似于
    var HTML=document.getElementById('id\u of The\u element').innerHTML
  • JS使用
    XMLHttpRequest
    将此字符串发送到服务器,可以使用浏览器的原始XHR支持,也可以使用您选择的JS框架
  • 在服务器上,您可以编写另一个servlet(或扩展现有servlet的功能),以接收此HTML并根据需要对其进行处理

  • 或者,如果我能以任何方式将HTML从浏览器返回到我的servlet…?问题还不够清楚。你能更详细地描述这个过程的每个步骤吗?你有什么问题吗?@Sergiu:在我的页面被呈现到浏览器中之后..我想从给定的div中获取整个html作为字符串。。。关于这一点的任何建议…获取将基于单击事件…我想这相当容易…但我的坏消息是我还没有找到正确的解决方案。感谢Sergiu的详细回复。我尝试了你的解决方案,我能够存储我的HTML。但我也想保留我的Javascript事件。使用您的解决方案,javascript事件不会被保留……您能帮我解决这个问题吗?您的意思是什么?事件是由浏览器发送的同步通知或信号。。。它们无论如何都不是HTML的一部分。