如何正确地转义在jQuery的.ajax函数中作为数据发送的html

前端之家收集整理的这篇文章主要介绍了如何正确地转义在jQuery的.ajax函数中作为数据发送的html前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
更新:一旦我在Firebug中查看问题,我立即发现了我的错误.这是一个令人尴尬的无与伦比的双引号,我必须以某种方式删除.我一直在使用Chrome的开发者窗口.很抱歉用完你的资源.但是,经验教训! (“我希望.)

对于我想要发送到我的服务器的html字符的最佳方法是什么?我正在使用jQuery,.ajax()和jsonp.

我正在写一个bookmarklet,它将当前页面的部分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相关文章