我正在使用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
答案 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;
}