Dojo 1.9.3 xhr vs iframe



到底用什么?!我有一个请求/xhr模块,不能发布多部分/表单数据(两个文本字段和文件上传)。当使用Iframe我可以发布表单没有问题。不过我想使用xhr。另一方面,不能使用Iframe,因为我将无法读取响应体。xhr是否支持多部分/for-data?是否有其他替代方法来执行这个简单的任务:提交一个文件和两个名称并获得一个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); }); }); });

*********************

我想出了一个很好的解决办法,因为似乎没有人知道这个问题的解决方案。

Task:需要使用multipart/form-data将表单发送到3.0 servlet,该表单在AJAX方法中具有文本字段和文件。

Dojo请求方法在大多数方法上不足,有时不能与AJAX一起工作。他们需要一个新的页面。

解决方案:我添加了一个iframe标签,并改变了窗体的目标iframe。解决!

  <iframe id="uploadTrg" name="uploadTrg" height="0" width="0"></iframe>

现在Ajax和表单的文本和文件工作

最新更新