如何从iFrame访问servlet结果?

时间:2010-11-28 09:45:24

标签: iframe gson

我正在使用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对象,评估字符串应该没问题。 我确信我在某个地方犯了一个错误,但我找不到它。也许我根本不应该在div中存储gson对象,并且有一个更好的解决方案。 任何帮助都会很棒 / f

1 个答案:

答案 0 :(得分: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>

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;

}