转义由jquery ajax发送的字符串中的所有特殊字符
我正在尝试在执行contentType: "application/json; charset=utf-8",
时发送键值对中的文本contentType: "application/json; charset=utf-8",
ajax发布到Web服务。 我面临的问题是,如果其中一个参数(接受来自用户的文本)有引号(“)它会破坏代码[Eror消息:传入的无效对象]。到目前为止,我已经尝试过这些但没有任何成功
var text = $("#txtBody").val(); var output1 = JSON.stringify(text); var output2 = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
关于如何逃避jquery ajaxpost的特殊字符的任何想法?
为什么不使用escape
?
escape(text);
https://developer.mozilla.org/en/DOM/window.escape
编辑!!!!
正如评论中所提到的,这已被弃用。
不推荐使用的escape()方法计算一个新字符串,其中某些字符已被hex转义序列替换。 请改用encodeURI或encodeURIComponent。
而是使用以下之一:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
对于那些会发现这个问题的人: 不要使用它已经从Web中删除的方法使用encodeURIComponent()
或encodeURI()
代替
encodeURIComponent方法()
是encodeURI()
已经有一个函数转义(var)可以帮助您转义值。 它应该足以满足你所说的目的
var output2 = escape(text);
我遇到了同样的问题,为了解决它,我改变了我进行ajax调用的方式。
我有类似的东西
var datatosend = "Hello+World"; $.ajax({ "type": "POST", "data": "info=" + datatosend
它发送信息= Hello World,用空格替换字符+。
所以我把它改成了正确的json字符串
$.ajax({ "type": "POST", "data": {"info":datatosend},
现在它的工作原理。 信息= +你好世界