ОБНОВЛЕНИЕ : Как только я посмотрел на проблему в 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 (), но пока ничего не получалось. Сначала я не использовал до отправки, но подумал, что должен попробовать, но без разницы.
В настоящее время я застрял в каком-то html-файле, в котором есть разрыв строки, затем табуляция и пара пробелов. Я попытался заменить эти символы с помощью replace ():
... .substring(0,1000).replace(/(\r\n|[\r\n])/g,'')
Я нашел эту строку регулярного выражения на другом сайте, которая должна заменить различные комбинации возвратов каретки и перевода строки.
Надеюсь, я объяснил достаточно ясно. Это мой первый вопрос в Stack Overflow, так что будьте спокойны. :)