MISE À JOUR: Une fois que j'ai regardé le problème dans Firebug, j'ai immédiatement trouvé mon erreur. Et c'était une double citation embarrassante et inégalée que j'ai dû supprimer d'une manière ou d'une autre. J'avais utilisé la fenêtre du développeur de Chrome. Très désolé d'utiliser vos ressources. Mais, leçon apprise! («Je l'espère.)Comment faire pour échapper correctement html envoyé en tant que données dans la fonction .ajax de jQuery
Quelle est la meilleure façon pour moi d'échapper les caractères html que je veux envoyer à mon serveur? J'utilise jQuery, .ajax() et jsonp.
Je suis . l'écriture d'un bookmarklet qui envoie des parties du code HTML de la page courante à mon serveur Voici l'appel ajax:
jQuery.ajax({
url: 'http://www.my_server.com/file.php?callback=?',
dataType: 'jsonp',
data: { someHtml: escape(jQuery(this).html().substring(0,1000)) },
success: function() { // stuff },
beforeSend: function(xhr) {
xhr.setRequestHeader('Content-type','text/html');
},
error: function() { // stuff }
});
je dois utiliser JSONP et donc je ne peux pas utiliser POST, ce qui est la raison pour laquelle je suis tronquer Les choses fonctionnent si le HTML est "gentil", mais s'il contient des caractères que javascript n'aime pas, alors j'ai des problèmes J'ai corrigé mon problème en utilisant escape(), mais maintenant je pense que je vais avoir newline et onglet problèmes.
console dev de Chrome me donne la même erreur:
Uncaught SyntaxError: Unexpected token <
que je suppose que signifie un certain caractère est à l'origine des choses à sortir de javascript. J'ai essayé ce qui suit: escape(), encodeURI/Component(), serialize(), text(), mais rien n'a encore fonctionné. Au début, je n'ai pas utilisé beforeSend, mais j'ai pensé que je devrais essayer, mais pas de différence.
Actuellement, je suis coincé avec du html qui a un saut de ligne, puis une tabulation, puis quelques espaces. Je l'ai essayé de remplacer ces caractères à l'aide de remplacer():
... .substring(0,1000).replace(/(\r\n|[\r\n])/g,'')
Je trouve cette chaîne regex sur un autre site qui est censé remplacer diverses combinaisons de retours chariot et à la ligne.
J'espère que je me suis expliqué assez clairement. C'est ma première question à Stack Overflow alors allez-y doucement. :)
+1 Très bonne première question. – Marko
Thx! J'aimerais ne pas avoir à le demander cependant. Frapper la tête contre le mur ... – SeanO