【发布时间】:2010-11-08 20:54:20
【问题描述】:
更新:在 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 上的第一个问题,所以请放轻松。 :)
【问题讨论】:
-
谢谢!但愿我不必问。头撞墙……
标签: jquery ajax jsonp escaping