Javascript 使用dojo上载程序到servlet时出错
我试图上传一个文件,并使用post方法将其发送到一个Javaservlet。我的道场是1.8。刚开始使用javascript,还有很多东西要学。如果可以,请纠正我。所以我有两个未定义的属性:label、UploaderID和dojosourcepath,这应该是真的Javascript 使用dojo上载程序到servlet时出错,javascript,html,servlets,dojo,uploader,Javascript,Html,Servlets,Dojo,Uploader,我试图上传一个文件,并使用post方法将其发送到一个Javaservlet。我的道场是1.8。刚开始使用javascript,还有很多东西要学。如果可以,请纠正我。所以我有两个未定义的属性:label、UploaderID和dojosourcepath,这应该是真的 **************** REVISED CODE *************************** <!DOCTYPE HTML> <html> <head> &l
**************** REVISED CODE ***************************
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>dojox.form.Uploader</title>
<link href="dijit/themes/dijit.css" rel="stylesheet" />
<link href="dijit/themes/claro/Common.css" rel="stylesheet" />
<link href="dijit/themes/claro/form/Common.css" rel="stylesheet" />
<link href="dijit/themes/claro/form/Button.css" rel="stylesheet" />
<link href="dojox/form/resources/UploaderFileList.css" rel="stylesheet" />
<script type="text/javascript"
src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js"
data-dojo-config="parseOnLoad: true, async: true,
isDebug: true,
packages: [{name: 'dojo', location: '.'},
{name: 'dijit', location:
'/dojo/dijit'},
{name: 'dojox', location:
'/dojo/dojox'},
]"></script>
<script>
dojo.require("dojo.domReady")
dojo.require("dijit.form.Button");
dojo.require("dijit.Dialog");
dojo.require("dijit.form.TextBox");
dojo.require("dojox.form.Uploader");
dojo.require("dojox.form.uploader.FileList");
dojo.require("dojo.parser");
});
</script>
</head>
<body class="claro">
<form method="post" action="user" id="myForm" enctype="multipart/form-data" >
<fieldset style="background-color:lightblue;">
<h1 id="greeting">User Administration</h1>
<p>First Name: <input type="text" name="fname" size="20">
LastName: <input type="text" name="lname" size="20"></p>
<input class="browseButton" name="uploadedfile" multiple="false"
type="file" data-dojo-type="dojox.form.Uploader" label="Select Some File"
id="uploader" />
<p><input type="submit" label="Submit" data-dojo-type="dijit.form.Button" />
</p>
<div id="files" data-dojo-type="dojox.form.uploader.FileList"
uploaderId="uploader"></div>
</fieldset>
</form>
</body>
</html>
是否正确设置了dojo.js?您如何使用您的应用程序?您是否已在计算机中或使用某些远程服务器下载了dojo源文件。 您可以使用谷歌CDN,如下所示。还要检查一下dojo源代码的设置
src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js"
除了@Dmitri注释之外。
删除下面的行
<script> dojoConfig ={isDebug:true, ParseOnLoad: true,};</script>
因为您将在下一行via中重新定义dojoConfig。数据dojo配置
您也可以使用新的AMD格式进行如下所示的require调用
<script type="text/javascript">
require([
"dojo/parser",
"dijit/form/Button",
"dijit/Dialog",
"dijit/form/TextBox",
"dojox/form/Uploader",
"dojox/form/uploader/FileList"
"dojo/domReady!"
], function (parser, Button, Dialog, TextBox, Uploader, FileList ) {
// now parse the page for widgets
parser.parse();
// Your code will go here
});
</script>
我注意到这里有几个错误: 您的第一行: dojo.required不存在,应为dojo.require 除此之外,dojo.domready甚至不是一个模块,应该是dojo.domready 以下代码完全错误: 函数分析器{ parser.parse; }; 您可能从使用AMD的代码示例中复制粘贴了它,但是,您不再使用AMD,而是使用dojo.require,因此此代码甚至不会编译 但是,您使用的是parseOnLoad机制,因此实际上您不需要自己解析页面,这甚至会导致错误,因为您要解析相同的小部件两次 如果删除该部分代码,则使加载解析机制工作所需的全部内容是:
dojo.require("dojo.parser");
这段代码看起来像是有人试图将AMD示例转换为非AMD代码时失败了,另一个错误是:
dojo.require("dijit.form/Button");
在使用AMD之前的代码dijit.form.Button时,应该使用点表示法。Dojo可能会理解这一点,至少在最近的Dojo版本中是这样,但我怀疑这在旧版本的Dojo中是否有效
通过换行符拆分属性名称,例如:
属性名数据dojo类型可能应该是一行,如果将该属性拆分为多行,我认为这是无效的
加载页面时用于解析页面的Dojo配置属性是parseOnLoad而不是parseOnLoad。我不确定Dojo是否处理这些不区分大小写的属性,但通常JavaScript属性是区分大小写的
但是,您已经在加载dojo的标记上使用了data dojo config属性,所以实际上您甚至不需要它
如果您修复了所有这些错误,您的脚本在使用AMD或不使用AMD的情况下都应该可以正常工作,正如您在本手册中所看到的:谢谢Dimitri,我已更正了所有必要的更改。然而,我认为我的问题是我的模块没有被识别。我在eclipse中将dojo 1.8的发行版作为文件系统导入到WebContent文件中。而不是标签:选择一些文件。我正在浏览。我将src添加到我的WebContent文件Eclipse中。不确定是否正在阅读。这是一个java servlte的index.html,它将读取名称并读取上传的文件。仍然无法识别属性:lable和uploaderId
dojo.require("dojo.parser");
dojo.require("dijit.form/Button");