我正在学习道场和初学者。我想使用Dojo从界面加载和编辑文本文件。请指导我在dojo中哪个组件就足够了。
答案 0 :(得分:0)
从我的评论的答案,我的理解是你想:
我原本认为最好的方法是使用dojo/request获取文本文件,然后再次使用它来发回。您可以通过各种dojo dijits进行选择和显示。
一个非常粗略的解决方案是:
<form data-dojo-type="dijit/form/Form">
<input type="text" id="fileName" data-dojo-type="dijit/form/TextBox" />
<button data-dojo-type="dijit/form/Button" type="button">Get
<script type="dojo/on" data-dojo-event="click">
require([
"dijit/registry",
"dojo/request"
], function(registry, request) {
var fileName = registry.byId("fileName").get("value");
request(fileName, {
"handleAs": "text"
}).then(function(content){
registry.byId("content").set("value", content);
});
});
</script>
</button><br /><br />
<textarea id="content" data-dojo-type="dijit/form/TextBox"></textarea>
<button data-dojo-type="dijit/form/Button" type="button">Send
<script type="dojo/on" data-dojo-event="click">
require([
"dijit/registry",
"dojo/request"
], function(registry, request) {
var content = registry.byId("content").get("value");
request("myhandler.php", {
"method": "post",
"data": {
"content": content
}
}).then(function(content){
// deal with the response
});
});
</script>
</button>
</form>
这将加载一个文本文件,其中包含您在文本框中输入的文件名(点击 get 后)。内容将加载到textarea进行编辑,并可通过单击发送将其发送回服务器脚本。
正如我所说,“这是一个非常粗糙的例子”。但是,它显示了使用dojo/request接收和发送服务器的信息。显然,您需要一个更复杂的解决方案,在适当的时候隐藏/显示小部件。您可能希望使用通过服务器代码填充的某种组合替换文件名文本框等等。
我建议你write your own widget封装整个操作,而不是在标记中声明它。您可以使用dojo/request从服务器加载json文件以填充组合框以选择文件。您还希望确保回发的信息来自可信来源。
重要!这仅在文本文件和您的网页位于同一域时才有效。它不适用于跨域请求。如果你想做跨域,你需要创建一个json解决方案。