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

标签 jquery ajax jsonp escaping

更新:当我查看 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 将负责对数据进行正确的 URL 编码:

data: { someHtml: $(this).html().substring(0, 1000) },

关于jquery - 如何正确转义 jQuery 的 .ajax 函数中作为数据发送的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122298/

相关文章:

javascript - 如何通过 jQuery AJAX 从使用 OAuth 1.0 身份验证的 Upwork API 请求 JSONP 文件?

javascript - Reactjs组件的异步渲染

jsonp - 从 wicket 组件获取 HTML 输出数据

json - JSON 和 JSONP 有什么区别?

javascript - 什么时候使用 $scope.$apply() 是安全的?

javascript - Angular 4 的 JSONP 回调问题

jquery - 使用 jQuery、HTML 和 CSS 制作我的下拉列表 'drop up'

javascript - 我可以编译加载的 Handlebars 模板吗?

jquery - JavaScript 错误 : 'moment' is undefined in Full Calendar Jquery plugin

javascript - 检测 iOS 是否正在使用 webapp