2012-05-19 2 views
0

J'utilise la méthode AjaxRequest.Get() de AjaxRequest.
qui suit est la ligne javascript analysis.aspxAjaxRequest.get() n'acceptant pas le texte/Html de la fonction Response.Write()

function getAnalysis(type) {    
     var innerHtml;  
     AjaxRequest.get(
      { 
       'url': 'getAnalysis.aspx?type=' + type 
       , 'onSuccess': function (req) { innerHtml = req.responseText; } 
      } 
     ); 
     document.getElementById("div_analysis").innerHTML = innerHtml; 
    } 

quand getAnalysis(type) est appelé à analysis.aspx tout va bien - la demande de paiement ajax est correctement soumise et la réponse est envoyée correctement. Mais à la fin la valeur de innerHTML reste indéfini.

Voici le code de getAnalysis.aspx -

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(type == "somwthing") str = load();  
    Response.Clear();  
    Response.CacheControl = "no-cache";    
    Response.Write(str);  
    Response.End();  
} 

Quand je débogués javascript en utilisant Google Chrome, je l'ai trouvé que la valeur de innerHMTL est indéfini, bien que tout allait bien.
Donc, je ne comprends pas pourquoi la classe AjaxRequest n'accepte pas la sortie de texte de Reponse.Write().

P.S. : J'ai également essayé Response.ContentType = "text/Html"; et Reponse.Fluch().
s'il vous plaît me guider thnx à l'avance.

+0

ce qui est la définition de 'load()'? –

+0

thats dummy, l'idée est qu'il retourne une chaîne – j4m4l

Répondre

0

Vous devez définir le contenu du div dans la fonction onsuccess car il est appelé de manière asynchrone lorsque la requête AJAX complète

function getAnalysis(type) {    
     var innerHtml;  
     AjaxRequest.get( 
      { 
       'url': 'getAnalysis.aspx?type=' + type 
       , 'onSuccess': function (req) { document.getElementById("div_analysis").innerHTML = req.responseText; } 
      } 
     ); 
    } 
+0

thxn maintenant son fonctionnement, mais il y a encore une chose, le html retourné contient une étiquette de script qui ne sont pas évalués (je suppose bcoz d'appel asynchrone) alors comment puis-je les obtenir évalué. – j4m4l

+1

Vous pouvez le faire en extrayant les éléments de script (disons avec jQuery) et en faisant ensuite un eval sur eux. Le mieux que vous puissiez faire n'est pas d'inclure des éléments de script dans le code HTML que vous transmettez. Dans la plupart des cas, il n'y a aucune raison de le faire. Aussi je crois que le problème se produit seulement quand vous essayez d'ajouter un script qui doit être exécuté immédiatement. Si vous ajoutez un script qui déclare simplement une fonction, tout devrait fonctionner. Et enfin, si vous pensez que vous avez vraiment besoin de le faire, posez une question distincte, car il s'agit d'un problème distinct. Assurez-vous de choisir judicieusement le titre et ayez un exemple sans code de serveur – Stilgar

Questions connexes