ACTUALIZACIÓN: Una vez que miré el problema en Firebug, encontré mi error inmediatamente. Y fue una vergonzosa cita doble incomparable que debí haber borrado de alguna manera. He estado usando la ventana de desarrollador de Chrome. Lo siento mucho por usar tus recursos. Pero, ¡lección aprendida! ("Espero.)Cómo escaparse correctamente html enviado como datos en la función .ajax de jQuery
Cuál es la mejor manera para que los caracteres de escape HTML que quiero enviar a mi servidor? Estoy usando jQuery, .ajax(), y jsonp.
estoy . escribiendo un bookmarklet que envía partes de hTML de la página actual a mi servidor Aquí está la llamada 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 }
});
necesito utilizar JSONP y por lo tanto no puedo usar POST, y es por eso que estoy truncando los datos html. Las cosas funcionan si el html es "bueno", pero si contiene caracteres que a javascript no le gustan, entonces tengo problemas. Solucioné mi problema usando escape(), pero ahora creo que estoy teniendo nueva línea y pestaña problemas.
consola dev de Chrome me da el mismo error:
Uncaught SyntaxError: Unexpected token <
que supongo que significa que algunos caracteres está causando cosas que estallan de JavaScript. He intentado lo siguiente: escape(), encodeURI/Component(), serialize(), text(), pero nada ha funcionado todavía. Al principio, no usé BeforeSend, pero pensé que debería probarlo, pero no hubo diferencia.
Actualmente, estoy atascado con algunos html que tienen un salto de línea, luego una pestaña, luego un par de espacios. He intentado reemplazar estos caracteres utilizando replace():
... .substring(0,1000).replace(/(\r\n|[\r\n])/g,'')
Me encontraron esta expresión regular en otro sitio que se supone para reemplazar varias combinaciones de retornos de carro y avances de línea.
Espero haber explicado con suficiente claridad. Es mi primera pregunta en Stack Overflow así que no me molestes. :)
+1 Muy buena primera pregunta. – Marko
¡Thx! Ojalá no tuviera que preguntarlo sin embargo. Golpeando la cabeza contra la pared ... – SeanO