javascript - Dojo 1.9.3 xhr 与 iframe

标签 javascript ajax iframe dojo xmlhttprequest

到底该用什么?!我有一个 request/xhr 模块,无法发布多部分/表单数据(两个文本字段和一个文件上传)。使用 Iframe 时,我可以毫无问题地发布表单。不过我想使用 xhr。另一方面,无法使用 iframe,因为我无法读取响应正文。 xhr 支持 multipart/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); }); }); });

********************* 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 以及带有文本和文件的表单正在运行。

关于javascript - Dojo 1.9.3 xhr 与 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642057/

相关文章:

javascript - 如何在js中转换日期格式?

javascript - 用于解析 JSON : does it work? 的脚本标记

javascript - 正则表达式:替换两个字符之间不包含逗号的所有字符

php - 在循环数据中选择选项时显示 div

javascript - IFRAME tiff 图像打印机无法打印完整图像

javascript - 在iisnode中运行 Nightmare Node js应用

javascript - jquery 获取前一个值而不是当前值

javascript - 在页面加载时检索数据库记录而不是 JavaScript 中的 keyup 函数

html - iframe 似乎破坏了 css 布局

asp.net-mvc-2 - 对 iframe 内的内容进行 ajax 替换时触发 iframe onload 事件