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

时间:2014-04-02 19:51:29

标签: javascript jquery ajax json

我有一个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数组中的双引号。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

看起来你的方向错误 - 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){}
     });