我有四个包含json字符串的文本框,我通过在各种js对象上调用json.stringify来创建它。
eg. '["users.name","users.username"]' (This is the value of one textbox)
我想要做的是从这四个json字符串创建一个json字符串,并使用POST将它们发送到后端..
所以我创建了一个对象并像这样添加它们
tmp = {}
tmp["columns"] = $("#sc").val();
/*adding more data....*/
$.ajax("/api/backend", {
data: JSON.stringify(tmp),
/* more ajax code...*/
});
发送的数据格式如下..
{"columns":"[\"users.name\",\"users.username\"]"}
这不是字符串而是json对象......
现在当我做以下事情时......
tmp1= JSON.stringify(tmp)
并发布使用..
$.ajax("/api/backend", {
data: JSON.stringify(tmp1),
/*more code below..*/
发送的数据格式如下,为字符串..
"{\"columns\":\"[\\\"users.name\\\",\\\"users.username\\\"]\"}"
这个字符串有很多' \'需要在后端考虑的字符。
这是处理我的问题的正确方法还是我做错了什么?
谢谢
答案 0 :(得分:0)
这取决于你想要达到的目标。
如果要向服务器发送一个结合了输入中所有JSON的JSON,在将它们添加到tmp
对象之前,最好先解析输入中的JSON。这样,您将获得包含对象的对象,而不是包含JSON字符串的对象。
从输入中检索JSON将是这样的:
tmp["columns"] = JSON.parse($("#sc").val());
看到您在tmp
对象中存储对象,而不是JSON字符串。然后,您可以将该对象作为JSON发送到您的服务器。
因此,您的服务器会收到:
"{\"columns\":\"[\"users.name\",\"users.username\"]\"}"
我认为,这看起来好多了。我希望有所帮助。