我有四个文本框,其中包含通过在各种js对象上调用json.stringify创建的json字符串。
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\\\"]\"}"
这个字符串有很多'\'字符,后端需要考虑这些字符。
这是解决我的问题的正确方法,还是我做错了什么?
谢谢
这取决于您要实现的目标。
如果要向服务器发送结合了输入中所有JSON的JSON,最好在将输入中的JSON添加到tmp
对象之前解析输入中的JSON 。这样,您将获得一个包含对象的对象,而不是包含JSON字符串的对象。
从输入中检索JSON就像这样:
tmp["columns"] = JSON.parse($("#sc").val());
看到您正在对象中存储tmp
对象,而不是JSON字符串。然后,您可以将该对象作为JSON发送到您的服务器。
因此,您的服务器将收到以下信息:
"{\"columns\":\"[\"users.name\",\"users.username\"]\"}"
我认为,这看起来要好得多。希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句