2010-03-22 12 views
2

J'utilise le code ci-dessous, ce qui est correct mais lorsque j'utilise le code ci-dessous pour tenter d'envoyer un fragment html à une page de traitement pour l'enregistrer en tant que fichier mais je n'ai rien.

J'ai essayé d'utiliser ajax avec processData défini sur de fausses annonces dataTypes de html, text et xml mais rien ne fonctionne. Je ne trouve rien à ce sujet alors je suppose que je dois manquer quelque chose d'assez trivial mais je suis là depuis 3 heures maintenant.

This works 
$.post("SaveFile.aspx", {f: "test4.htm", c: "This is a test"}, 
    function(data){ 
     alert(data); 
    }, "text"); 

This fails 
$.post("SaveFile.aspx", {f: "test4.htm", c: "<h1>This is a test</h1>"}, 
    function(data){ 
     alert(data); 
    }, "text"); 
+0

Qu'est-ce que "échoue"? – zerkms

+0

Essayez d'être plus clair. Que voulez-vous dire par échec? Y at-il une erreur dans la console d'erreur de votre navigateur, le rappel est-il appelé ou non? Voyez-vous l'appel ajax dans les journaux de serveur. Ou essayez comme Sky Sanders suggéré 'c: encodeURIComponent ("

Ceci est un test

")' – jitter

+0

Vous utilisez Firefox? Installez Firebug et vous serez en mesure de voir exactement ce qui a été envoyé et ce qui a été retourné. – Christian

Répondre

3

Essayez uriEncoding la première valeur, comme celui-ci ...

Il peut obtenir le xml à votre point final comme prévu.

var value = encodeURIComponent("<h1>This is a test</h1>"); 
$.post("SaveFile.aspx", {f: "test4.htm", c:value }, 
    function(data){ 
     alert(data); 
    }, "text"); 
0

S'il y a une erreur sur le serveur, la fonction de réussite .post ne sera pas appelée. Essayez d'utiliser .ajax et transmettez une fonction de réussite et d'erreur.

+0

Je doute qu'il y ait une erreur sur le serveur, car il passe la même entrée au même endroit à chaque fois, sauf qu'il a un balisage dans le second. –

+0

Bien que j'en doute aussi, c'est la seule différence entre les deux snippets – Yisroel

0

Il pense que vous êtes erreur provient de la ValidateRequest dans asp.net. Vous ne pouvez pas envoyer html simple à une page asp.net sans htmlEncoding votre HTML ou désactiver le paramètre ValidateResquest sur la directive @page de la page aspx ou dans le web.config si vous voulez faire cela pour toutes vos pages.

Vous voulez en savoir plus sur asp.net? Visiter http://www.developerit.com

+0

NB: Désactiver le validateRequest peut être une fuite de sécurité. Il est donc préférable d'utiliser htmlEnconding et d'utiliser une liste blanche pour valider que personne n'envoie de balises de script, car cela pourrait être une attaque xss potentielle. –