2011-12-06 25 views
0

我正在使用jquery和json保存文本。jquery/json:不会保存'和

我使用.text()获取textarea的文本并使用json保存。 保存除\和'以外的所有特殊字符。

如果我尝试保存%&$§/////blaääüü**´~+它的作品,但如果我尝试保存 %&$§/////blaääüü**´~+\\\\\\\'''''它不起作用!

我该如何解决这个问题?

编辑

为节省代码:(提取物)

$.ajax({ 
     url: "myURI" 
       , type: "POST" 
       , dataType: "json" 
       , data: 
       "{ " + 
       "', 'text': '" + $('#myText').text() + 
       "' }" 
       , contentType: "application/json; charset=utf-8"; 
     }); 
+2

你怎么“保存“文字?请发布您的代码。 –

+0

我在我的帖子中添加了代码。 –

回答

6

好吧,你的主要问题是,你创建JSON是无效的,而且你创建“手动”。字符串连接的结果是:

{ ', 'text': '%&$§/////blaääüü**´~+\\\'''''' } 

它看起来不像JSON。

使用JSON.stringify[MDN]external library可为好)代替:

data: JSON.stringify({text: $('#myText').text()}) 

其他问题:

  • 键在JSON必须用双引号,而不是单引号。

  • 事实上,文本包含转义字符(\)和单引号(')与您创建的最终字符串混淆。这就是为什么你应该保留内容和创建到浏览器的正确转义。

  • 根据您所使用的服务器端语言,你应该在JSON分配到一个键,以便正确的键值对被发送到服务器:

    data: {json: JSON.stringify(...)} 
    
+0

感谢这个不错的答案。 我还有一个问题: 如果我尝试使用stringify,它将不会保存任何内容。 ('#val1')。val(), val2:$('#val2')。val(), text:$('#myText' ).text() }) } –

+0

你是什么意思的“它不会保存任何东西”?您在服务器端收到的数据是什么?你正确访问它吗? JSON是正确创建的:http://jsfiddle.net/mkKKx/所以无论你有什么问题,它似乎都在服务器端。 –

+0

成功时,它警告“成功”,并在保存错误时发送一个错误。我得到错误“无效的json-primitive:json” –