当前位置: 首页 > 面试题库 >

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

路雅懿
2023-03-14
问题内容

更新
:一旦查看了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是“
nice”,事情就可以了,但是如果它包含javascript不喜欢的字符,那我就有问题了。我通过使用escape()解决了我的问题,但是现在我认为我遇到了换行和制表符问题。

Chrome的开发者控制台给了我同样的错误:

Uncaught SyntaxError: Unexpected token <

我认为这意味着某些字符导致事物脱离javascript。我尝试了以下方法:escape(),encodeURI /
Component(),serialize(),text(),但是还没有任何效果。一开始,我没有使用过beforeSend,但认为应该尝试一下,但没什么区别。

目前,我停留在一些带有换行符,html,制表符和几个空格的html上。我尝试使用replace()替换这些字符:

... .substring(0,1000).replace(/(\r\n|[\r\n])/g,'')

我在另一个站点上找到了此正则表达式字符串,该字符串应替换回车符和换行符的各种组合。

我希望我已经足够清楚地解释了自己。这是我在Stack Overflow上遇到的第一个问题,所以对我轻松一点。:)


问题答案:

您不需要转义或编码。jQuery将处理正确的URL编码数据:

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


 类似资料:
  • 问题内容: 我正在Ajax调用中发送一些数据。值之一是设置为FALSE的布尔值。在Ajax调用的PHP脚本中,始终将其评估为TRUE。有任何想法吗? 在上面的Ajax中调用的脚本vote.php中,我检查了布尔值: 但条件始终满足。 问题答案: 帖子只是文字,文字在php中的评估结果为true。一种快速的解决方法是发送零而不是false。您也可以在PHP中用引号引起来。 然后,您可以传递正确/错误

  • 问题内容: 我整整一天都被这个问题困扰。我试图做的是使用Ajax从视图向控制器发送2个值。这是我的代码: 和我的hot_products控制器: 我不知道如何获取2个值,分别是start_time和end_time。请帮我。提前致谢。PS:我正在使用cakephp 2.3 问题答案: 为您提供控制器中的帖子数据。 更新 您的Ajax错误,

  • 本文向大家介绍如何使用GET方法在jQuery Ajax中发送数据?,包括了如何使用GET方法在jQuery Ajax中发送数据?的使用技巧和注意事项,需要的朋友参考一下 jQuery.get(url,[data],[callback],[type])方法使用GET HTTP请求从服务器加载数据。 这是此方法使用的所有参数的描述- url- 包含请求发送到的URL的字符串 数据 -此可选参数表示将

  • 本文向大家介绍如何使用POST方法在jQuery Ajax中发送数据?,包括了如何使用POST方法在jQuery Ajax中发送数据?的使用技巧和注意事项,需要的朋友参考一下 jQuery.post(url,[data],[callback],[type])方法使用POST HTTP请求从服务器加载页面。 这是此方法使用的所有参数的描述- url- 包含请求发送到的URL的字符串 数据 -此可选参

  • 问题内容: TheObject = { 当我尝试调用此方法时: 它返回“未定义”。我不知道问题出在哪里。该数组是在成功函数中创建的,但是我无法正确返回它。谢谢你的帮助! 问题答案: 在您的代码中,您正在寻找在进行ajax调用之后使用过程编码的方法。主要问题是在ajax调用完成之前正在寻找。 另一个问题是您要向该函数返回组,但是该函数什么也不返回。 因此,您需要像这样将回调引入ajax函数:

  • 问题内容: 我试图将数组作为ajax请求的一部分发送,如下所示: 我想看看我在servlet中得到了什么,所以我使用了这一行: 返回表示空地图。 Firebug告诉我我遇到错误 如果我像这样发送一个queryString 作为“数据”,那么一切工作正常,因此它与无法按原样发送数组有关。我要怎么做才能将该数据放入servlet进行进一步处理。如果可以避免,我不想将其拉出并变成JS中的queryStr