道场1.9.3 XHR VS IFRAME [英] Dojo 1.9.3 xhr vs iframe

查看:172
本文介绍了道场1.9.3 XHR VS IFRAME的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

要使用什么真的吗?我有一个请求/ XHR模块,不能发布的multipart / form-data的(两个文本字段和文件上传)。当使用IFRAME中,我可以张贴没有问题的形式。我想,虽然使用XHR。 iframe的另一方面,不能使用,因为我将无法读取响应主体。是否XHR支持多部分/换数据?是否有另一种替代方案来执行这个简单的任务:发布的文件及两个名字,并得到一个JSONObject的响应。我读文件中的部分。

  **************道场code ****** *********************

 <脚本> dojoConfig = {parseOnLoad:真}< / SCRIPT>
  <脚本的src ='道场释放-1.9.3 /道场/ dojo.js中'>< / SCRIPT>
 < /头>

 <体类=克拉罗>
 <表格数据道场型=的dijit /表/表ID =myForm的数据道场-ID =myForm的
   ENCTYPE =多部分/表单数据行动=的方法=>
   <标签=名字>名字< /标签><输入数据dojo-
   TYPE =的dijit /表格/ ValidationTextBox类型=文本名称=FNAME/>
   <标签=姓氏与GT;名字:< /标签><输入数据dojo-
   TYPE =的dijit /表格/ ValidationTextBox类型=文本名称=L-NAME/>
 <标签=文件名>证书上载:LT; /标签><输入类型=文件名称=文件名/>
    <按钮式=按钮ID =startButton>启动< /按钮> < /形式GT;

 <脚本>
 要求([道场/请求/ XHR,道场/ DOM,道场/ DOM形式,道场/ DOM的结构,
 道场/ JSON,道场/上,道场/ domready中!]
  功能(XHR,DOM,domForm,domConst,JSON,上){

  在(dom.byId(startButton),点击,函数(){
  VAR数据= domForm.toObject(myForm会);

  XHR(ADDUSER,{
  数据:数据,
  方法:后,
   handleAs:JSON
   }),然后(函数(CERT){
    (接收到的数据!)警告;
   },功能(错误){
   警报(数据否认了!!!);
   警报(ERR); }); }); });
 

****** Servlet的code *********** *************

 保护无效的doPost(HttpServletRequest的要求,
      HttpServletResponse的响应)抛出了ServletException,IOException异常{

    字符串名字=的request.getParameter(FNAME); //检索<输入类型=文本
    NAME =描述>
    字符串名字=的request.getParameter(L-NAME); //检索<输入类型=文本
    NAME =描述>
    部分CERTFILE = request.getPart(文件名); //检索<输入类型=文件
    NAME =文件>
    字符串Certname = getFilename(CERTFILE); //调用getFilename方法

    InputStream的Certcontent = Certfile.getInputStream();
    的BufferedReader在=新的BufferedReader(新的InputStreamReader(Certcontent));
 

解决方案

我想出了一个良好的工作,因为周围的人似乎知道解决这个。

任务:所需张贴的形​​式到3.0的servlet使用的multipart / form-data的是具有文本字段和全部在AJAX方法的文件。

道场请求方法短期下跌最mehtods,有时无法与AJAX工作。他们将需要一个新的页面。

解决方法:我加入一个iframe标签,并改变了形式为目标的iframe中。 解决了!

 < IFRAME ID =uploadTrgNAME =uploadTrg高度=0WIDTH =0>< / IFRAME>
 

现在Ajax和文本和文件的形式工作。

What to use really?! I have a request/xhr module which cannot post a multipart/form-data (Two text fields and a file upload). When using Iframe I can post the form with no problem. I would like to use xhr though. Iframe on the other hand cannot be used because I won't be able to read the response body. Does xhr support multipart/for-data? Is there another alternative to perform this simple task: post a file and two names and get a JSONObject response. I'm reading the file in parts.

    ***************************  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 Code ************************

       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));

解决方案

I figured out a good work around since nobody seemed to know the solution to this.

Task: Needed to post a form to a 3.0 servlet using multipart/form-data that had text fields and a file all within the AJAX method.

Dojo request methods fell short on most mehtods and sometimes couldn't work with AJAX. They would require a new page.

Solution: I added in an iframe tag and changed the form to target the iframe. SOLVED!

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

Now Ajax and form with text and file are working.

这篇关于道场1.9.3 XHR VS IFRAME的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆