0

我正在使用 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

4

1 回答 1

0

我找到了解决方案。我想我在这里很天真。我在 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>

小服务程序代码:

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;

}
于 2010-11-28T15:49:36.653 回答