0

私はjavascriptを使用しています。iframeを使用してファイルをサーブレットにアップロードします。投稿を正しく受け取り、gsonオブジェクトを返すJavaサーブレットを使用しています。ただし、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> 

サーブレットは必要なことをすべて実行して返します

 > 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/"}です。

gsonオブジェクトをdivから取得するにはどうすればよいですか?

私の職務では

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 で変数を宣言し、それをサーブレットで 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 に答える