转义jquery ajax发送的字符串中的所有特殊字符
我试图在执行转义jquery ajax发送的字符串中的所有特殊字符,jquery,text,Jquery,Text,我试图在执行contentType:“application/json;charset=utf-8”时,以键值对的形式发送文本,ajax发布到web服务。我面临的问题是,如果其中一个参数(接受来自用户的文本)有引号(“),它会破坏代码[Eror message:传入的对象无效]。到目前为止,我尝试了这些参数,但没有成功 var text = $("#txtBody").val(); var output1 = JSON.stringify(text); var output2 = text.
contentType:“application/json;charset=utf-8”时,以键值对的形式发送文本,
ajax发布到web服务。我面临的问题是,如果其中一个参数(接受来自用户的文本)有引号(“),它会破坏代码[Eror message:传入的对象无效]。到目前为止,我尝试了这些参数,但没有成功
var text = $("#txtBody").val();
var output1 = JSON.stringify(text);
var output2 = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
关于如何转义jquery ajax帖子中的特殊字符有什么想法吗?2020更新
使用,一个来自MDN的示例
//对诸如?、=、/、&等字符进行编码:
console.log(编码组件('?x=ццццц');
//预期输出:“%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B”
log(encodeURIComponent('?x=test'));
//预期输出:“%3Fx%3Dtest”
它期望一个完整的URI也值得一看
我以前的建议是使用escape()
方法,但现在它已被弃用,很快也将被删除
在编写新的ECMAScript代码时,程序员不应使用或假设存在这些特性和行为
更多:
为什么不使用
转义
escape(text);
编辑!!!!
正如评论中提到的,这是不推荐的
方法计算一个新字符串,其中某些字符已被十六进制转义序列替换。请改用encodeURI或encodeURIComponent
请改为使用以下选项之一:
对于那些会发现这个问题的人: 不要使用转义方法,因为它已从Web上删除 使用
encodeURIComponent()
或encodeURI()
代替我遇到了同样的问题,为了解决这个问题,我改变了调用ajax的方式 我有点像
var datatosend = "Hello+World";
$.ajax({
"type": "POST",
"data": "info=" + datatosend
它在post info=Hello World上发送,将字符+替换为一个空格
因此,我将其更改为正确的json字符串
$.ajax({
"type": "POST",
"data": {"info":datatosend},
现在它工作了。info=Hello+World
escape()
。来源:encodeURI()
(下面列出的备选方案)。来源:函数fixedCodeUri(str){
返回encodeURI(str).replace(/%5B/g,“[”).replace(/%5D/g,“]);
}
encodeURIComponent()
(下面列出的备选方案)。来源:函数fixedCodeUriComponent(str){
返回encodeURIComponent(str)。替换(/[!'()*]/g,函数(c){
返回“%”+c.charCodeAt(0).toString(16);
});
}
因此,如果要对除以下运算符以外的所有数据进行编码:
+@?=:#,$&
,请使用FixedCodeUri()
。如果要包含这些字符(用于定义GET
参数和其他用途),请使用FixedCodeUriComponent()
您的答案对我很有用Starx。但不幸的是,他们不允许我标记多个答案。抱歉:(此功能在JS中被弃用。我添加了一个答案,因为使用escape Method不是一个好的做法。弃用此功能已从Web上删除。虽然某些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序可能随时中断。不,永远不要使用en。)codeURI(),它是不可靠的,并且基于猜测。encodeURI根据&
和=
字符猜测数据名称和值的开始和结束位置,这种猜测可能是错误的。作为一个直接示例,此url由encodeURI错误编码:encodeURI(“http://example.org/?foo=i 爱我的母亲和父亲)
-这里的foo应该是我爱我的母亲和父亲
,但encodeURI将其编码为我爱我的母亲
-同时,encodeURIComponent进行0次猜测,并在这里正确工作:“http://example.org/?foo=“+encodeURIComponent(“我爱我的父母”);