2010-11-28 11 views
0

私はjavascriptを使用しています。私はiframeを使ってファイルをサーブレットにアップロードします。私は正しく投稿を受け取り、gsonオブジェクトを返すJavaサーブレットを使用します。しかし、私はiframeから返されたオブジェクトにアクセスすることはできません。ここiFrameからサーブレットの結果にアクセスするにはどうすればよいですか?

サーブレットは、それが

gsonTableは{ "ニックネーム" である
> 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(); 

必要と戻り何ない形

<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> 

である: "defaultStatname"、 "日":「1// 2010/"} 1は

は、どのように私は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)を実行するとき、私は、私は文字列をevalに問題ないはずgson対象であるため、非常に驚​​いて 「無効なラベル」を取得します。 私はどこかで間違いを犯していると確信していますが、私はそれを見つけることができません。たぶんdivにオブジェクトを格納するべきではありません。もっと良い解決策があります。 助けがあれば助かります /f

答えて

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; 

} 
関連する問題