0

我正在学习道场和初学者。我想使用 Dojo 从界面加载和编辑文本文件。请指导我 dojo 中的哪个组件足以满足此要求。

4

1 回答 1

0

从对我的评论的回答来看,我的理解是你想要:

  1. 在网页上的表单中输入文件名。
  2. 然后,Dojo 将从您的服务器加载该特定文本文件。
  3. 然后该文件需要以某种编辑组件显示在屏幕上。
  4. 然后,用户需要该工具将文件发布回服务器。

我会认为最好的方法是使用dojo/request来获取文本文件,然后再次使用它来回发。您可以使用各种道场 dijit来进行选择和显示。

一个非常粗略的解决方案是:

<form data-dojo-type="dijit/form/Form">

    <input type="text" id="fileName" data-dojo-type="dijit/form/TextBox" />
    &nbsp;<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之后)。内容被加载到文本区域中进行编辑,并且可以通过单击发送回服务器脚本发送

正如我所说,这是“一个非常粗略的例子”。但是,它显示了使用dojo/request来接收和发布信息到/从服务器。显然,您需要一个更复杂的解决方案,在适当的时候隐藏/显示小部件。您可能希望用通过您的服务器代码填充的某种组合替换文件名文本框......等等。

我建议您编写自己的小部件来封装整个操作,而不是在标记中全部声明。您可以使用dojo/request从服务器加载 json 文件以填充组合框以选择文件。您还需要确保回发的信息来自受信任的来源。

重要的!这仅在文本文件和您的网页位于同一域中时才有效。它不适用于跨域请求。如果你想做跨域,你需要创建一个 json 解决方案。

于 2013-02-13T18:55:06.600 回答