[英]Dojo 1.9.3 xhr vs iframe
真正使用什么? 我有一个request / xhr模块,该模块无法发布multipart / form-data(两个文本字段和一个文件上传)。 使用iframe时,我可以毫无问题地发布表格。 我想虽然使用xhr。 另一方面,无法使用iframe,因为我将无法读取响应正文。 xhr是否支持多部分/用于数据? 还有另一种方法可以执行此简单任务:发布一个文件和两个名称并获取JSONObject响应。 我正在分部分读取文件。
*************************** Dojo Code ***************************
<script>dojoConfig = {parseOnLoad: true}</script>
<script src='dojo-release-1.9.3/dojo/dojo.js'></script>
</head>
<body class="claro">
<form data-dojo-type="dijit/form/Form" id="myForm" data-dojo-id="myForm"
encType="multipart/form-data" action="" method="">
<label for="firstname">FirstName</label><input data-dojo-
type="dijit/form/ValidationTextBox" type="text" name="fname"/>
<label for="lastname">LastName:</label><input data-dojo-
type="dijit/form/ValidationTextBox" type="text" name="lname" />
<label for="fileName">Certificate Upload:</label><input type="file" name="fileName" />
<button type="button" id="startButton">Start</button> </form>
<script>
require(["dojo/request/xhr", "dojo/dom", "dojo/dom-form", "dojo/dom-construct",
"dojo/json", "dojo/on", "dojo/domReady!"],
function(xhr, dom, domForm, domConst, JSON, on){
on(dom.byId("startButton"), "click", function(){
var data = domForm.toObject("myForm");
xhr("addUser",{
data: data,
method:"post",
handleAs:"json"
}).then(function(cert){
alert("data received!");
}, function(err){
alert("data denied!!!");
alert(err); }); }); });
********************* Servlet代码************************
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String FirstName = request.getParameter("fname"); // Retrieves <input type="text"
name="description">
String LastName = request.getParameter("lname"); // Retrieves <input type="text"
name="description">
Part Certfile = request.getPart("fileName"); // Retrieves <input type="file"
name="file">
String Certname = getFilename(Certfile); // Calls getFilename method
InputStream Certcontent = Certfile.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(Certcontent));
我想出了一个不错的解决方法,因为似乎没人知道解决方案。
任务:需要使用multipart / form-data将表单发布到3.0 servlet,该表单具有文本字段和文件,都在AJAX方法中。
Dojo请求方法在大多数方法上都不够用,有时无法与AJAX一起使用。 他们将需要一个新页面。
解决方案:我添加了iframe标记,并更改了以iframe为目标的格式。 解决了!
<iframe id="uploadTrg" name="uploadTrg" height="0" width="0"></iframe>
现在,带有文本和文件的Ajax和表单正在运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.