转义由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}, 

现在它的工作原理。 信息= +你好世界