2010-11-28 35 views
0

J'utilise javascript. J'utilise un iframe pour télécharger un fichier vers une servlet. J'utilise une servlet Java qui reçoit correctement le message et retourne un objet gson. Cependant, je ne peux pas accéder à l'objet retourné à partir de l'iframe.Comment puis-je accéder aux résultats du servlet à partir d'un iFrame?

Voici la forme

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

le servlet fait tout ce dont il a besoin et retourne

> 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(); 

où le gsonTable est { "surnom": "defaultStatname", "date": "1/1/2010/"}

comment puis-je obtenir l'objet gson de la div?

Dans ma fonction

function uploadComplete() { 
    var frame=parent.document.getElementById('myFrame'); 
    var pippo=frame.contentDocument; 
    var div = pippo.getElementById('resu'); 
    var myvar=div.innerHTML; 
    myvar=eval(myvar); } 

quand je joue eval (myvar) Je reçois « label invalide » Je suis très surpris parce qu'être un objet gson il devrait être bien à eval la chaîne. Je suis sûr que je fais une erreur quelque part mais je ne peux pas le trouver. Peut-être que je ne devrais pas stocker l'objet gson dans le div et il y a une meilleure solution. Toute aide serait grande /f

Répondre

0

J'ai trouvé une solution. Je pense que j'ai été assez naïf ici. Je déclare une variable dans l'iframe et l'assigne dans la servlet à la variable gson dans le html iFrame. Ensuite, j'ai lu la variable dans la fonction uploadComplete. Ici, il est

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

le code de 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(); 

la fonction

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; 

}