在 ajax 调用之前转义 JSON 字符串中的字符

Escape characters in JSON string before ajax call

本文关键字:字符串 字符 JSON 转义 ajax 调用      更新时间:2023-09-26

>我有一个JSON字符串

var str = '{'+
            '"name": "John Doe",'+
            '"company": [{"name": "ABC Corp"}, {"name": "XYZ Corp"}],'+
            '"salary": "$200000"'+
           '}';

我使 ajax 调用为

$.ajax({
     url: 'url',
     type: 'POST',
     context: document.body,
     dataType: 'json',
     data: str,
     success: function(data){},
     error: function(error){}
     });

如何在进行 ajax 调用之前转义 JSON 数组中的双引号。

str已经是有效的JSON(根据JSONLint),因此在通过$.ajax发送之前,您无需转义任何内容。

看起来你走错了路 - JSON.stringify用于将 JSON 对象转换为字符串,你想要的方法就是 JSON.parse .

因此,将其更改为:

$.ajax({
     url: 'url',
     type: 'POST',
     context: document.body,
     dataType: 'json',
     data: JSON.parse(str),
     success: function(data){},
     error: function(error){}
     });

您还可以将格式化为 JSON 的字符串传递给 $.ajax,并且由于您的字符串已经是有效的 JSON,您可以完全跳过该步骤:

$.ajax({
     url: 'url',
     type: 'POST',
     context: document.body,
     dataType: 'json',
     data: str,
     success: function(data){},
     error: function(error){}
     });

尽管您可以将其构建为一个对象,如果这更容易(通常比尝试格式化字符串!

var postData = {
   name:'John Doe'
   ... etc
};
$.ajax({
     url: 'url',
     type: 'POST',
     context: document.body,
     dataType: 'json',
     data: postData,
     success: function(data){},
     error: function(error){}
     });