【问题标题】:how do I access the servlet results from an iFrame?如何从 iFrame 访问 servlet 结果?
【发布时间】:2010-11-28 09:45:23
【问题描述】:

我正在使用 JavaScript。我使用 iframe 将文件上传到 servlet 。我使用正确接收帖子并返回 gson 对象的 java servlet。但是我无法从 iframe 访问返回的对象。

这是表格

<form name='myform' id='myform' method="POST" enctype="multipart/form-data" action="http://localhost:9090/myServlet" target="myFrame" > 
<td> <input type="file" size=20 name="fname"> </td> 
<td> <input type="Submit" value="Upload"> </td> </form> 
</tr></table>
<iframe src="" id="myFrame" name="myFrame" style="width: 110px; height: 110px;">
    <script type="text/javascript">
    var accountList=null;
    </script>
</iframe> 

servlet 做任何它需要的事情并返回

 > response.setContentType("text/html");
    > response.getWriter().println("<html><body
    > onload=\"window.parent.uploadComplete();\">"+
    >                     "<div id='resu' name='resu'>" +
    >                     gsonTable+
    >                     "</div>"+
    >                     "</body></html>");     response.getWriter().close();

gsonTable 是 {"nickname":"defaultStatname","date":"1/1/2010/"}

如何从 div 中取出 gson 对象?

在我的功能中

function uploadComplete() {
    var frame=parent.document.getElementById('myFrame');
    var pippo=frame.contentDocument;
    var div = pippo.getElementById('resu');
    var myvar=div.innerHTML;
    myvar=eval(myvar); }

当我执行 eval(myvar) 时,我得到“无效标签” 我很惊讶,因为作为一个 gson 对象,评估字符串应该没问题。 我确定我在某个地方犯了错误,但我找不到它。也许我根本不应该将 gson 对象存储在 div 中,并且有更好的解决方案。 任何帮助都会很棒 /f

【问题讨论】:

    标签: iframe gson


    【解决方案1】:

    我找到了解决办法。我想我在这里很天真。 我在 iframe 中声明了一个变量,并在 servlet 中将其分配给 iFrame html 中的 gson 变量。然后我在 uploadComplete 函数中读取变量。在这里

    <form name='myform' id='myform' method="POST" enctype="multipart/form-data" action="http://localhost:9090/bankUI/loadaccountstatement" target="myFrame" > 
    <td> <input type="file" size=20 name="fname"> </td> 
    
    <td> <input type="Submit" value="Upload"> </td> </form> 
    </tr></table>
    <iframe src="" id="myFrame" name="myFrame" style="width: 110px; height: 110px;">
        <script type="text/javascript">
        var newStatement;
        </script>
    </iframe>
    

    servlet 代码:

    response.setContentType("text/html");
                            response.getWriter().println("<html><body onload=\"window.parent.uploadComplete();\">"+
                                    "<script type=\"text/javascript\">" +
                                    "parent.document.newStatement = "+gsonTable+";" +
                                    "</script>"+
                                    "<div> </div>"+
                                    "</body></html>");
                            response.getWriter().close();
    

    功能

    function uploadComplete() {
        //the variable newStatement in the iframe containing the returned variable
        var stat=parent.document.newStatement;
        //assigning a variable in the general context
        var myVar=this.currentSession=stat;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2017-10-22
      相关资源
      最近更新 更多