我正在尝试使用以下代码绘制图表。
它运作良好。
如您所见,我应该在div
中添加一些文本信息。
如果sample.txt
在本地驱动器中包含此信息,是否可以动态将其加载到div
部分而不是手动将其加载?
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Sample Diagram</title>
</head>
<body>
<div class="diagram">
Title: Diagram
<!-- Participant FIRST
Participant SECOND
Participant D
Participant F
Participant G //-->
E->F: 2
SECOND->FIRST: 1
FIRST->SECOND: 1
C-->SECOND: Request token
C->E: 2
SECOND->FIRST: Forward request
FIRST->>C: Send token
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/js-sequence-diagrams/1.0.4/sequence-diagram-min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
/test/index.html
/test/js/index.js
/test/js/sample.txt
/test/sample.txt
// js-sequence-diagrams by bramp <http://bramp.github.io/js-sequence-diagrams/>
$(".diagram").sequenceDiagram({theme: 'simple'});
$(function(){
$.get("sample.txt", function(data) {
$(".diagram").text(data);
});
});
Title: Diagram
SECOND->FIRST: 1
FIRST->SECOND: 1
C-->SECOND: Request token
C->E: 1
SECOND->FIRST: Forward request
FIRST->>C: Send token
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Sample Diagram</title>
</head>
<body>
<div class="diagram">
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js'></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/js-sequence-diagrams/1.0.4/sequence-diagram-min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
答案 0 :(得分:2)
将文件输入元素添加到HTML页面:
<input type="file" id="file" onchange="readTxT()"/>
并手动选择sample.txt
:
function readTxT(){
var reader = new FileReader();
var files=document.getElementById('file').files;
var f = files[0];
reader.onload = function(e) {
var text = reader.result;
$(".diagram").text(text).sequenceDiagram({theme: 'simple'});
}
reader.readAsText(f);
}
答案 1 :(得分:1)
如果(http)服务器上的sample.txt
可用,该网站是托管的(可能是localhost
),是的。
假设您的目录结构是这样的(/ var / www /是我示例中服务器的根目录):
将其放在index.js
:
window.onload = function() {
$.get("sample.txt", function(data) {
$(".diagram").text(data).sequenceDiagram({theme: 'simple'});
});
}
如果您没有使用任何HTTP服务器,则无法直接从文件系统加载文件 - 这是Javascript沙箱的一部分(安全概念)。
我建议使用像lx1412's answer这样的东西,手动文件选择器是唯一可行的方法。
我使用Firefox和HTTP服务器测试了上面的脚本;和my edit of lx1412's answer使用没有HTTP服务器的Firefox。
答案 2 :(得分:1)
最简单的方法是向服务器发出get
请求。为此你必须使用jQuery $。get 函数。哪个会请你。
以下是对 jQuery.get()
的引用<强> USAGE 强>
// make sure the PATH is correct for `sample.txt`
// $.get(your URL to the file, callback function)
$(function(){
$.get("sample.txt", function(data) {
$(".diagram").text(data);
});
});