我有一种情况,我使用java以编程方式写入文本文件,同时使用jQuery从同一文件中读取。
我遇到的问题是,只要通过java将内容写入文本文件,jQuery就无法找到更新的内容。
我搜索了很多,但我找到的唯一结果是java和java处理,而不是java和javascript(即客户端和服务器端)
我不确定这是否可能。
关于这个问题的更多信息:
我使用java在文件中写入了抓取结果,我试图使用javascript(jQuery.post()方法)显示相同的内容。
JAVA
一种多线程抓取程序,可抓取网站并执行某些功能。我正在尝试使用相同的Java程序将一些内容写入文本文件中以及何时进行爬网。我写的内容主要是关于调用哪个线程的细节以及正在被爬网的当前链接。
我在文本文件中写这个的原因是我需要在UI中显示输出,以便查看UI的人会理解会发生什么。
写作完全符合预期。
JAVASCRIPT(jQUERY)
这使用
jQuery.get or post ("sample.txt", function (result) {
$("#someID").html(result);
});
它正常地从文本文件中读取,但是当java和javascript都试图访问该文件时,它是主导javascript的java,因此jQuery无法在发生时获取更新的内容。
我想这个解释足以让人们明白我的问题究竟是什么!
总的来说,java和javascript尝试同时访问同一个文件。所以出现了这个问题。
感谢任何帮助。
提前致谢
答案 0 :(得分:1)
我认为该文件已缓存。最简单的方法是通过不同的URL请求文件。尝试类似"sample.txt?rnd="+Math.rand()
答案 1 :(得分:0)
可能存在同步问题,您的数据也会损坏。
答案 2 :(得分:0)
我有一个问题,是否必须使用Ajax?我想你正试图弄明白
这不是很容易做到,我不会真的推荐它。但是,有一种更好的技术称为websocket。所以你可以做的是,客户端可以向服务器提交请求以将数据写入文件,然后服务器可以将更新的内容发送回客户端。此外,这比通过大量HTTP请求实现相同目标要好得多。
此外,如果您想要兼容整首浏览器,请查看http://socket.io/
答案 3 :(得分:0)
感谢所有那些试图帮助我的人。 我终于想出了一个解决方案。我没有使用jquery post直接从文件中读取,而是使用另一个读取文件内容的jsp文件,并在屏幕上使用out.println进行打印,之后我使用jQuery post来获取该jsp文件所写的内容。因此避免了同步问题。
以下是我的解释:
早些时候我有
java program -> Text File <- javascript (jQuery post) // Resulted in synchronization problem where in javascript was not able to access the updated content.
现在
java program -> Text file <- JSP file <- javascript (jQuery post) // Avoided the synchronization problem as that file is accessed by the same server side language. After that jQuery reads the content printed by JSP page.
经过多次变革,终于找到了一个好的工作解决方案。
谢谢大家。