UPDATE: Una volta esaminato il problema in Firebug, ho trovato immediatamente il mio errore. Ed è stata un'imbarazzante doppia citazione inequivocabile che devo aver cancellato in qualche modo. Stavo usando la finestra degli sviluppatori di Chrome. Molto dispiaciuto per aver usato le tue risorse. Ma, lezione imparata! ("Spero.)Come eseguire correttamente l'escape di html inviato come dati nella funzione .jax di jQuery
Qual è il modo migliore per me di caratteri di escape HTML che voglio inviare al mio server? Sto usando jQuery, .ajax(), e jsonp.
Sono . scrittura di un bookmarklet che invia parti del codice HTML della pagina corrente al mio server Ecco la chiamata 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 }
});
ho bisogno di usare JSONP e quindi non posso usare POST, e questo è il motivo per cui sto troncando i dati HTML. Le cose funzionano se l'html è "bello", ma se contiene caratteri non graditi da javascript, allora ho dei problemi. Ho risolto il problema con l'uso di escape(), ma ora penso di avere newline e scheda i problemi.
console dev di Chrome mi dà lo stesso errore:
Uncaught SyntaxError: Unexpected token <
che presumo significa che qualche personaggio sta causando le cose di uscire di javascript. Ho provato il seguente: escape(), encodeURI/Component(), serialize(), text(), ma non ha funzionato ancora. All'inizio, non usavo beforeSend, ma pensavo di doverlo provare, ma nessuna differenza.
Attualmente, sono bloccato con un html che ha un'interruzione di riga, quindi una scheda, quindi un paio di spazi. Ho provato a sostituire questi caratteri utilizzando replace():
... .substring(0,1000).replace(/(\r\n|[\r\n])/g,'')
Ho trovato questa stringa regex su un altro sito che dovrebbe sostituire varie combinazioni di ritorni a capo e avanzamenti di riga.
Spero di essermi spiegato abbastanza chiaramente. È la mia prima domanda a Stack Overflow quindi andate piano con me. :)
+1 Molto buona prima domanda. – Marko
Thx! Vorrei che non dovessi chiederlo però. Scuotere la testa contro il muro ... – SeanO