ОБНОВЛЕНИЕ : Как только я посмотрел на проблему в Firebug, я сразу обнаружил свою ошибку. И это была досадная двойная кавычка, которую я, должно быть, как-то удалил. Я использовал окно разработчика Chrome. Очень извиняюсь за использование ваших ресурсов. Но урок усвоен! ("Надеюсь.)
Как мне лучше всего избежать символов HTML, которые я хочу отправить на свой сервер? Я использую jQuery, .ajax () и jsonp.
Я пишу букмарклет, который отправляет части html текущей страницы на мой сервер. Вот вызов 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 }
});
Мне нужно использовать JSONP, поэтому я не могу использовать POST, и поэтому я усекаю данные html. Все работает если html "хороший", но если он содержит символы, которые не нравятся javascript, то у меня проблемы. Я исправил свою проблему с помощью escape (), но теперь мне кажется, что у меня проблемы с новой строкой и табуляцией.
Консоль разработчика Chrome выдает ту же ошибку:
Uncaught SyntaxError: Unexpected token <
, что, как я полагаю, означает, что какой-то символ вызывает нарушение работы javascript. Я пробовал следующее: escape (), encodeURI / Component (), serialize (), text (), но пока ничего не помогло. Сначала я не использовал beforeSend, но подумал, что стоит попробовать, но никакой разницы.
В настоящее время я застрял с некоторым html, в котором есть разрыв строки, затем табуляция, а затем пара пробелов. Я попытался заменить эти символы с помощью replace ():
... .substring(0,1000).replace(/(\r\n|[\r\n])/g,'')
Я нашел эту строку регулярного выражения на другом сайте, который должен заменить различные комбинации возврата каретки и перевода строки.
Надеюсь, я достаточно ясно объяснил себя. Это мой первый вопрос в Stack Overflow, так что не беспокойтесь. :)